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" 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.