Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-talk] Re[2]: [apache-rus] loading dso module



In <2682.000318@xxxxxxxxxx> Alexey V. Meledin (avm@xxxxxxxxxx) wrote:
AM> День добрый,
AM>     Khimenko!

AM> Saturday, March 18, 2000, 1:49:38 PM,  Вы написали:

KV>> In <13428.000317@xxxxxxxxxx> Alexey V. Meledin (avm@xxxxxxxxxx) wrote:
AM>>> День добрый!

AM>>>    Возникло пару небольших вопросов и возможно немного не в тему, за
AM>>>    что прошу извинить.
AM>>>    1. Cижу на FreeBSD 3.3. с Apache 1.3.12 rus скомпиленом с поддержкой
AM>>>    dso и мне требуется подгрузить линуксовый dso модуль.
AM>>>    linux_enable имею установленным, соответственно при помощи brandelf
AM>>>    могу пускать линуксовые бинарники.
AM>>>    Может быть кто знает - существует ли разница между простым запуском
AM>>>    "чужого" бинарника и подгрузкой dso модуля.
AM>>>    Т.е. распространиться ли эмуляция на .so модуль?
KV>> Нет.
AM> Почему?, если не сложно объяснить.

Господи. А если подумать ? Вот у тебя в программе есть, скажем, функции
fopen и fprintf. То есть есть, разумеется, только вызовы -- сами-то функции
живут в соответствующей динамической библиотеке. Так оно и во freebsd и в
linux'е и вообще во всех современных *nix'ах. Но (в отличие от Windows)
в выполняемом файле формата ELF НЕТ названия библиотеки в которой должны
находиться эти функции ! Соотвественно при попытке использовать два DSO
в одной программе, которые ссылаются на РАЗНЫЕ библиотеки с этими функциями
(в данном случае имеются в виду libc из freebsd и glibc) происходит "короткое
замыкание". И даже если его не происходит (в glibc 2.1 есть специальные
средства против этого), то все равно получаем кашу. Структуры FILE из
freebsd'ной libc и из glibc несовместимы между собой, так что если в одном
месте вызывается fopen из libc, а в другом fprintf из glibc, то ничего, кроме
"bus error" получиться не может. Собственно это простой факт: если в программе
смешиваются разные версии одной и той же библиотеки, то гибрид нежизнеспособен
(конечно если обе библиотеки реально используются). Это касается не только
libjpeg или Berkeley DB, но и вообще любых библиотек. В частности libc/glibc.

AM>>>    Пока словил грабли в виде "Bus error" и core.

KV>> Естественно. Две совершенно различные libc'шные библиотеки -- чего ты ждал ?

AM> linc-ная библиотека у меня лежит для линуха и именно та, что надо
AM> libc.6.so и именно там где надо лежит.
AM> Вопрос только в том - она ли подключается или не она на тек. момент.

*И*Д*И*О*Т*. У тебя сам freebsd'ный apache в вакууме существует или где ?
Откуда он функцию printf берет ? Из linux'овой glibc ? Сильно сомневаюсь...



=============================================================================
=               Apache-Talk@xxxxxxxxxxxxx mailing list                      =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
=       Archive avaliable at http://www.lexa.ru/apache-talk                 =






Спонсоры сайта:

[ Russian Apache ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk archive ]

"Russian Apache" includes software developed by the Apache Group for use in the Apache HTTP server project (http://www.apache.org/) See Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C) 1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.