将静态库链接到Boost Python(共享库) - 导入错误

时间:2010-08-19 01:29:47

标签: c++ python boost linker compilation

我正在构建一个Boost Python模块(.so共享库文件),它依赖于另一个外部库(STXXL)

虽然我可以构建和导入示例Boost Python模块,但是当STXXL被抛入混合时我会遇到问题。特别是在python

中运行import fast_parts

我得到ImportError: ./fast_parts.so: undefined symbol: _ZN5stxxl10ran32StateE

这告诉我STXXL库没有被链接,但我不确定这是怎么回事,因为我链接它并且链接器没有给我任何错误。值得注意的是,我可以使用STXXL成功构建和运行独立程序,据我所知,库存储在下面显示的lib目录中的.a存档中。我已将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 :(得分:0)

我正在假设Linux,如果这不正确,请发表评论。 ldd的{​​{1}}输出是什么样的?是否表示找不到libfast_parts.so

您可能需要在libstxxl.so/home/zenna/Downloads/stxxl-1.3.0/lib/的路径中添加LD_LIBRARY_PATH

libfast_parts.so