Complie Boost.Python code error: library not found for -lpython3.6m
Complie Boost.Python code error: library not found for -lpython3.6m
我有一个示例代码Boost.Python
#include <boost/python.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
我编译它时指定 Python3
g++ -o hello_ext.so -O2 hello.cpp -std=c++11 -fPIC -shared \
-Wall -Wextra `python3.6m-config --includes --libs` \
-lboost_python3
但是我得到了错误
ld: library not found for -lpython3.6m
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Python:Python3.6 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
Boost.Python:使用brew install boost-python --with-python3
安装
python3.6m-config --includes --libs
的输出是
-I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m
-lpython3.6m -ldl -framework CoreFoundation
如何通过指定 python3 和 boost.python3 来编译我的代码?
检查 python3.6m-config --ldflags
提供的目录,确保 libpython3.6m.dylib
在那里。如果是这样,请将上述命令的选项添加到您的编译器调用中。
如果不存在,您需要使用 --enable-shared
构建 Python。
我有一个示例代码Boost.Python
#include <boost/python.hpp>
char const* greet()
{
return "hello, world";
}
BOOST_PYTHON_MODULE(hello_ext)
{
using namespace boost::python;
def("greet", greet);
}
我编译它时指定 Python3
g++ -o hello_ext.so -O2 hello.cpp -std=c++11 -fPIC -shared \
-Wall -Wextra `python3.6m-config --includes --libs` \
-lboost_python3
但是我得到了错误
ld: library not found for -lpython3.6m
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Python:Python3.6 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6
Boost.Python:使用brew install boost-python --with-python3
python3.6m-config --includes --libs
的输出是
-I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m -I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m
-lpython3.6m -ldl -framework CoreFoundation
如何通过指定 python3 和 boost.python3 来编译我的代码?
检查 python3.6m-config --ldflags
提供的目录,确保 libpython3.6m.dylib
在那里。如果是这样,请将上述命令的选项添加到您的编译器调用中。
如果不存在,您需要使用 --enable-shared
构建 Python。