繁体   English   中英

如何将python静态库与我的c ++程序链接起来

[英]how to link python static library with my c++ program

我正在实现一个使用python / C ++ Extensions的C ++程序。 截至目前,我明确地将我的程序链接到我编译的python静态库。 我想知道有没有办法将我的程序与系统安装的python链接(我的意思是linux附带的默认python安装)

是。 有一个名为python-config的命令行实用程序:

Usage: /usr/bin/python-config [--prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--help]

出于链接目的,您必须使用--ldflags参数调用它。 它将打印您必须传递给链接器(或g++ )的标志列表,以便与系统安装的python库链接:

$ python-config --ldflags
-L/usr/lib/python2.6/config -lpthread -ldl -lutil -lm -lpython2.6

它还可以为您提供使用--cflags参数进行编译的标志:

$ python-config --cflags
-I/usr/include/python2.6 -I/usr/include/python2.6 -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes

假设你在test.cpp文件中有一个测试程序,那么你可以做这样的事情来编译和链接:

g++ $(python-config --cflags) -o test $(python-config --ldflags) ./test.cpp

这会将您的程序与共享库链接起来。 如果要转为静态,可以将-static选项传递给链接器。 但这将与所有静态内容相关联,包括运行时。 如果你想只使用静态python,你必须自己找到这些库。 其中一个选项是解析python-config --ldflags输出并查找带有.a扩展名的库。 但我宁愿坚持所有动态或全静态。

希望能帮助到你。 祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM