In <Pine.BSF.4.21.9912201147130.16151-100000@pipe.aspec.ru> Rustam Yusupov
(tengen@aspec.ru) wrote:
RY> Привет!
RY> подскажите как быть, темные мы ;-)
RY> есть redhat 6.0, apache 1.3.9 PL29.0, есть такая база - кодекс. ее
RY> можно собрать с апачем.
RY> проблема в том, что видимо сами библиотеки этой базы собраны для redhat
RY> 5... ну и соответственно при сборке не находятся коекакие модули из
RY> стандартной библиотеки
>> <=== src/modules/standard
>> ===> src/modules/kodeks
>> gcc -DRUSSIAN_APACHR -DAPACHE_1_3 -DLINUX=2 -o kdb kdb.c libkdb.a
>libkodeks.a -lstdc++ -lm -lcrypt
>> libkdb.a(kdbmain.o): In function `ErrorOutput::ErrorOutput(void)':
>> kdbmain.o(.text+0x45): undefined reference to `__eh_pc'
>> libkdb.a(kdbmain.o): In function `StdOutput::StdOutput(void)':
>> kdbmain.o(.text+0xb1): undefined reference to `__eh_pc'
>> libkdb.a(kdbmain.o): In function `StdOutput::_Write(char *, unsigned int)':
>> kdbmain.o(.text+0x1ac): undefined reference to `__eh_pc'
>> kdbmain.o(.text+0x1cb): undefined reference to `__eh_pc'
>> libkdb.a(kdbmain.o): In function `StdOutput::_Read(char *, unsigned int)':
>> kdbmain.o(.text+0x26c): undefined reference to `__eh_pc'
>> libkdb.a(kdbmain.o)(.text+0x293): more undefined references to `__eh_pc'
>follow
>> libkodeks.a(membuf.o): In function `NewHandler::NewHandler(void)':
>> membuf.o(.text+0x1079): undefined reference to `set_new_handler'
>> libkodeks.a(membuf.o): In function `UnsortCore<BufferHash::page, 10,
>0>::Increase(unsigned int)':
>> membuf.o(.UnsortCore<BufferHash::page, 10,
>0>::gnu.linkonce.t.Increase(unsigned int)+0x164): undefined reference to
>`__eh_pc'
>> membuf.o(.UnsortCore<BufferHash::page, 10,
>0>::gnu.linkonce.t.Increase(unsigned int)+0x1eb): undefined reference to
>`__eh_pc'
>> libkodeks.a(membuf.o): In function `UnsortCore<char [256], 10,
>0>::Increase(unsigned int)':
>> membuf.o(.UnsortCore<char ()[256], 10, 0>::gnu.linkonce.t.Increase(unsigned
>int)+0x168): undefined reference to `__eh_pc'
>> membuf.o(.UnsortCore<char ()[256], 10, 0>::gnu.linkonce.t.Increase(unsigned
>int)+0x1ef): undefined reference to `__eh_pc'
>> libkodeks.a(math.o): In function `MathObj::MathObj(void)':
>> math.o(.text+0x1a6): undefined reference to `__eh_pc'
>> libkodeks.a(math.o)(.text+0x1c1): more undefined references to `__eh_pc'
>follow
>> collect2: ld returned 1 exit status
>> make[4]: *** [kdb] Error 1
RY> если поискать eh_pc, то он есть в библиотеке libstdc++.so.2.8.0, но его
RY> нет в libstdc++-2-libc6.1-1-2.9.0.so.
Имеено. Стандартная библиотека C++ для gcc 2.7.2.3 несовместима с библиотекой
для gcc 2.8.1, которая несовместима с подобной от egcs 1.0.3, а та несовместима
с библиотекой из egcs 1.1.2, которая несовместима с библиотекой gcc 2.95.2, а
версия от 2.95.2 несовместима с gcc 3.0 (от которого пока есть только beta'ы).
Ну и так далее.
RY> может че надо сказать компилеру? egcs-1.1.2 ....
Единственный способ -- поставить egcs из RedHat 5.2 или (лучше) пересобрать
все (если исходников от библиотеки нет, то я бы даже думать о ее использовании
не стал; хотя дело ваше). Хотя и это может не спасти смертельно раненого кота,
ибо вмешаются различия в glibc... Вообще же совместимости между разными
версиями библиотек в Linux'е, как правило, нет никакой (за исключением, пожалуй,
стандартной C-шной библиотеки) и, соответственно, очень быстро получаем
ситуацию,
когда библиотеку использовать нельзя (что будет, если использовать в программе
две библиотеки, одна из которых использует, скажем, libjpeg 6a, а
другая -- libjpeg 6b ? правильно -- неработающая программа; и libjpeg с
libstdc++ ни в коем разе не исключения! libungif, libpng, openssl и т.д. и т.п.;
исключением является как раз ситуация совместимости разных версий библиотек).
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =