Связывание статической библиотеки в Boost Python (разделяемая библиотека) - ошибка импорта - PullRequest
2 голосов
/ 19 августа 2010

Я создаю модуль Boost Python (файл общей библиотеки .so), который зависит от другой внешней библиотеки (STXXL)

Хотя я могу собрать и импортировать примеры модулей Boost Python, я столкнулся с проблемами, когда STXXLброшен в смесь.В частности, при запуске import fast_parts в python

я получаю ImportError: ./fast_parts.so: undefined symbol: _ZN5stxxl10ran32StateE

Это говорит мне, что библиотека STXXL не связана, но я не уверен, как это может быть, поскольку яЯ ссылаюсь на него, и компоновщик не дает мне никаких ошибок.Стоит отметить, что я могу успешно создавать и запускать автономные программы с использованием STXXL, и, насколько мне известно, библиотеки хранятся в архиве .a в каталоге lib, показанном ниже.Я сократил свой Makefile до одной команды следующим образом:

g++ -I/home/zenna/Downloads/stxxl-1.3.0/include -include stxxl/bits/defines.h -I/home/zenna/local/include -I/usr/include/python2.6 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -O3 -Wall -g -DFOO=BAR -pthread -L/home/zenna/Downloads/stxxl-1.3.0/lib/ -lstxxl -L/home/zenna/local/lib/ -lboost_python -lpython2.6 -fPIC -shared -o fast_parts.so partition.cpp

Любой совет?

1 Ответ

0 голосов
/ 19 августа 2010

Я предполагаю, что Linux, пожалуйста, прокомментируйте, если это неверно. Как выглядит вывод ldd для libfast_parts.so? Означает ли это, что libstxxl.so не найдено?

Возможно, вам потребуется добавить /home/zenna/Downloads/stxxl-1.3.0/lib/ в LD_LIBRARY_PATH или rpath для libfast_parts.so.

-Wl,-rpath,/home/zenna/Downloads/stxxl-1.3.0/lib -L/home/zenna/Downloads/stxxl-1.3.0/lib -lstxxl
...