[castle] More once bug in my head/hands or in your distr
Ilya Evseev
ilya_evseev на chat.ru
Вт Июл 31 19:52:50 MSD 2001
----- Original Message -----
From: Dmitry V. Levin <ldv на alt-linux.org>
To: ALT Linux Castle mailing list <castle на altlinux.ru>
Sent: Tuesday, July 31, 2001 1:24 PM
Subject: Re: [castle] More once bug in my head/hands or in your distr
>> $ cd /lib; ls -alF libdb*
>>
>> 551256 Feb 2 17:02 libdb-3.2.so*
>> 12 Jul 22 01:43 libdb-3.so -> libdb-3.2.so*
>> 11 Jul 22 01:41 libdb.so.2 -> libdb1.so.2* // это
правильно??
>> 11 Jul 22 01:41 libdb.so.3 -> libdb2.so.3* // это
правильно??
>> 64202 Nov 22 2000 libdb1.so.2*
>> 250604 Feb 4 04:30 libdb2.so.3*
> Симлинки правильные.
>> $ ldd /usr/local/oops/modules/berkeley_db_api.so | grep libdb
>>
>> libdb.so.3 => /lib/libdb.so.3 (0x40060000)
>>
>> Функцию db_env_create() oops использует, только если считает,
>> что работает с db3. Действительно, objdump показывает,
>> что она есть в libdb-3.2.so, но отсутствует в libdb1.so.2 и libdb2.so.3
>> Поэтому я сделал так:
>>
>> $ ln -fs libdb-3.2.so libdb.so.3
> Это неправильно.
> Надо профиксить oops с тем, чтобы он правильно определял,
> с какой версией db он собирается.
Он считает, что собирается с версией 3,
так как проверяет макропеременную DB_VERSION_MAJOR,
а она в /usr/include/db.h (симлинк, указывает на db3/db.h) равна 3.
При сборке с третьей версией GDBM oops использует
db_env_create(), которая в /usr/include/db3/db.h объявлена.
Тогда получается, что ошибка в oops заложена на стадии компоновки,
и он должен подгружать не libdb.so.3, а libdb-3.so ?
Странно все-таки... Я считал, что ключик "-ldb" по идее
должен компоновать либо с самой последней версией,
либо с самой первой, но никак не с промежуточной.
С уважением,
Илья Евсеев
Подробная информация о списке рассылки Castle