ld:在MacOS上找不到-lboost_python的库

时间:2018-08-18 06:54:56

标签: python c++ boost homebrew boost-python

在Mac上,我想构建示例Boost.Python代码

hello.cpp

Animation an = AnimationUtils.loadAnimation(this, R.anim.rotate_anim);
an.fillAfter = true
sector.startAnimation(an)

我将#include <boost/python.hpp> char const* greet() { return "hello, world"; } BOOST_PYTHON_MODULE(hello_ext) { using namespace boost::python; def("greet", greet); } Boost.Python一起安装了

然后我编译了brew install boost-python --with-python3

hello.cpp

将生成一个g++ -fpic -c -L/usr/local/Cellar/boost/1.67.0_1/lib `python3.6m-config --includes --libs --ldflags` hello.cpp 文件。并通过

生成hello.o文件
.so

但它返回了

g++ -shared -L/usr/lib -L/usr/local/Cellar/boost/1.67.0_1/lib -L/usr/local/Cellar/boost-python3/1.67.0_1/lib/  `python3.6m-config --libs --ldflags` -lboost_python3 -o hello_ext.so hello.o

或更详细的输出,带有ld: library not found for -lboost_python3 clang: error: linker command failed with exit code 1 (use -v to see invocation)

-v

我该如何解决?

1 个答案:

答案 0 :(得分:0)

最后,我发现boost-python lib路径中没有这样的libboost_python37.dylib

$ ls /usr/local/Cellar/boost-python3/1.67.0_1/lib
libboost_numpy37-mt.a      libboost_numpy37.a         libboost_python37-mt.dylib libboost_python37.dylib
libboost_numpy37-mt.dylib  libboost_numpy37.dylib     libboost_python37-mt.a     libboost_python37.a

所以我创建了一个软链接

$ sudo ln -s libboost_python37.dylib libboost_python3.dylib

我现在可以编译我的代码。