Как мне удовлетворить ссылку на стороннюю общую библиотеку для stat, когда я создаю прокладку общей библиотеки, а не исполняемый файл?
Вопрос
Я новый сопровождающий собственной системы Python, которая использует набор сторонних общих библиотек C через прокладку общей библиотеки, созданную с использованием комбинации swig и сценария setup.py.До недавнего времени это работало хорошо.
Сторонние общие библиотеки C были обновлены для новых функций, и теперь после чистой сборки я получаю следующую ошибку времени выполнения, когда пытаюсь запустить нашу основную программу Python (которая импортирует сгенерированную прокладку общей библиотеки):
-sh-3.00$ python ams.py
ImportError: /usr/lib/libz4lnx.so: undefined symbol: stat
Я нашел ветку обсуждения 1999 года, в которой объясняется, что проблема в том, что stat присутствует не в libc.so.6, а в libc_nonshared.a, и предлагается решение:Свяжите библиотеку c, добавив -lc в командную строку сборки.
http://www.redhat.com/archives/pam-list/1999-February/msg00082.html
Я добавил букву «c» в список библиотек в скрипте setup.py, но это не изменило мои результаты.Я подозреваю, что это потому, что я создаю прокладку общей библиотеки, а не исполняемый файл.
Как я могу удовлетворить ссылку сторонней общей библиотеки на stat, учитывая мою среду сборки?
Моя система сборки:
-sh-3.00$ lsb_release -a
LSB Version: :core-3.0-ia32:core-3.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID: CentOS
Description: CentOS release 4.6 (Final)
Release: 4.6
Codename: Final
Моя версия gcc:
-sh-3.00$ gcc --версия
gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-10)
Моя версия Python:
-sh-3.00$ питон -V
Python 2.3.4
Решение 2
Как выяснилось, хотя переход на Centos 5.3, вероятно, был бы полезен в долгосрочной перспективе, реальная проблема заключалась в том, что libz4lnx была построена на DVD, который я изначально использовал.В процессе перехода на Centos 5.3 я также перешёл на более новую сборку библиотеки libz4lnx.Сегодня, тестируя что-то еще, я использовал библиотеку с оригинального DVD и получил ту же самую ошибку неопределенного символа при запуске программы Python.Возврат к новейшему DVD (примерно на два месяца позже) снова решил проблему.
Другие советы
Решением было создать новую виртуальную машину Centos 5.3 и пересобрать и/или переустановить компоненты по мере необходимости.