如何修复/ usr / bin / ld:找不到-lboost_python

时间:2019-04-08 17:05:41

标签: g++ ubuntu-16.04 boost-python bjam

我刚刚按照https://www.boost.org/doc/libs/1_69_0/libs/python/doc/html/building/no_install_quickstart.html上的说明安装了boost.python 但是当我尝试运行代码

    bjam toolset=gcc --verbose-test test 

它抛出:

...found 23 targets...
...updating 6 targets...
gcc.link.dll extending.so
/usr/bin/ld: cannot find -lboost_python
collect2: error: ld returned 1 exit status

    "g++"    -o "extending.so" -Wl,-h -Wl,extending.so -shared -Wl,--start-group "extending.o"  -Wl,-Bstatic  -Wl,-Bdynamic -lboost_python -ldl -lpthread -lutil -Wl,--end-group -fPIC -g 

...failed gcc.link.dll extending.so...
...skipped <p.>test_ext for lack of <p.>extending.so...
gcc.link test_embed
/usr/bin/ld: cannot find -lboost_python
collect2: error: ld returned 1 exit status

    "g++" -L"/usr/lib" -L"/usr/lib/python2.7/config" -Wl,-rpath -Wl,"/usr/lib" -Wl,-rpath -Wl,"/usr/lib/python2.7/config"  -o "test_embed" -Wl,--start-group "embedding.o"  -Wl,-Bstatic  -Wl,-Bdynamic -lboost_python -ldl -lpthread -lutil -lpython2.7 -Wl,--end-group -fPIC -g 

...failed gcc.link test_embed...
...skipped <p.>test_embed.run for lack of <p.>test_embed...
...failed updating 2 targets...
...skipped 4 targets...

有人知道如何解决吗?我只希望boost使用boost.python。 谢谢

1 个答案:

答案 0 :(得分:0)

这是链接器错误。 lib文件的名称可能不同,因此必须手动创建符号链接。

在usr / lib目录中搜索并找到“ libboost_pythonXX.so”文件

XX将与您在构建时配置boost的python版本匹配,从引发的异常中您可能是使用python2.7配置的,因此该文件可能会被命名为libboost_python27.so

,然后创建一个符号链接:

sudo ln -s“ libboost_pythonXX.so” libboost_python.so

您可以使用此链接进行参考。

https://github.com/BVLC/caffe/issues/4843

它帮助我为我解决了错误。