ld:在MacOS上找不到-lboost_python的库 [英] ld: library not found for -lboost_python on MacOS
本文介绍了ld:在MacOS上找不到-lboost_python的库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在Mac上,我想构建示例Boost.Python代码
On Mac, I want to build the example Boost.Python code
hello.cpp
#include <boost/python.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
我用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
文件.并通过
There is a hello.o
file generated. And generate .so
file by
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
.
Or more detailed output with -v
.
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 -v
Apple LLVM version 9.0.0 (clang-900.0.38)
Target: x86_64-apple-darwin17.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
"/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -dylib -arch x86_64 -macosx_version_min 10.13.0 -o hello_ext.so -L/usr/lib -L/usr/local/Cellar/boost/1.67.0_1/lib -L/usr/local/Cellar/boost-python3/1.67.0_1/lib/ -L/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/config-3.6m-darwin -lpython3.6m -ldl -framework CoreFoundation -lpython3.6m -ldl -framework CoreFoundation -lboost_python3 hello.o -lc++ -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/9.0.0/lib/darwin/libclang_rt.osx.a
ld: library not found for -lboost_python3
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我该如何解决?
推荐答案
最后,我发现boost-python lib路径中没有这样的libboost_python37.dylib
Finally, I found there is no such libboost_python37.dylib
in boost-python lib path
$ 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
所以我创建了一个软链接
So I created a soft link
$ sudo ln -s libboost_python37.dylib libboost_python3.dylib
我现在可以编译我的代码.
I can compile my code now.
这篇关于ld:在MacOS上找不到-lboost_python的库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文