Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ld:在MacOS上找不到用于-lboost_python的库_Python_C++_Boost_Homebrew_Boost Python - Fatal编程技术网

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

ld:在MacOS上找不到用于-lboost_python的库,python,c++,boost,homebrew,boost-python,Python,C++,Boost,Homebrew,Boost Python,在Mac上,我想构建示例Boost.Python代码 你好。cpp #include <boost/python.hpp> char const* greet() { return "hello, world"; } BOOST_PYTHON_MODULE(hello_ext) { using namespace boost::python; def("greet", greet); } 生成了一个hello.o文件。并生成.so文件 g++ -shar

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

你好。cpp

#include <boost/python.hpp>

char const* greet()
{
    return "hello, world";
}

BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("greet", greet);
}
生成了一个
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
进行更详细的输出

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库路径中没有这样的
libboost\u 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

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

或者你可以使用
-lboost\u python37
instead@leiyc是的,
-lboost_python37
是另一种选择。
$ sudo ln -s libboost_python37.dylib libboost_python3.dylib