符合Boost.Python代码错误:-lpython3.6m找不到库

时间:2018-08-18 04:31:50

标签: python c++ python-3.x boost boost-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 /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6上的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来编译代码?

1 个答案:

答案 0 :(得分:1)

检查python3.6m-config --ldflags提供的目录,确保libpython3.6m.dylib在此处。如果是这样,请将上述命令的选项添加到编译器调用中。

如果不存在,则需要使用--enable-shared构建Python。