[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