[英]How to link python's static library for C extensions?
我正在尝试为python编写一个涉及Python C API的C ++扩展。 根据我之前使用Visual Studio进行此操作的经验,我只需要包含python的头文件并链接python的静态库,一切都会正常工作。
但是我现在无法在OS X Mavericks上做到这一点。 我从python.org安装了一个单独的Python 3.4.2,并在我的Cmake配置中添加了一个include条目:
include_directories("/Library/Frameworks/Python.framework/Versions/3.4/Headers")
然后我不知道如何继续静态库部分。 在Windows上,它们存储在%python_root%/libs
,您可以在那里找到.lib
文件。 但是在OS XI上找不到这样的目录,其中放置了.a
静态库。
我尝试了几个解决方案,例如将python-config --lib
的结果python-config --lib
到编译选项并set(CMAKE_BUILD_TYPE Release)
同时它们最终都出现以下错误:
Undefined symbols for architecture x86_64:
"_PyLong_FromLong", referenced from:
test() in Main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我也尝试了distutils
,但它似乎没有正常工作,:(
您收到链接器错误,该库尚未添加到您的链接选项中。
在我的系统OSX 10.8.5上,静态库位于以下目录中:您需要将目录添加到您的cmake库路径,并添加python库本身。 (在GCC中,您使用-L和-l选项)。
Directory: /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/
file: libpython2.7.a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.