Cha*_*l72 4 c++ python gcc distutils
我正在使用distutils来构建一个用C++编写的Python扩展模块.我遇到的问题是,为了编译扩展模块,我需要链接某个共享库.这需要设置额外的编译器标志.所以,我搜索了Python文档,发现了对象的extra_compile_args属性Extension.所以我尝试了以下方法:
from distutils.core import setup, Extension
module = Extension('test', sources = ['test.cpp'])
module.extra_compile_args = ['--std=c++0x', '-l mylib'];
setup(name = 'test', version = '1.0', ext_modules = [module])
Run Code Online (Sandbox Code Playgroud)
这似乎是编译的,除非我在Python中导入我的模块时ImportError由于未定义的符号而引发异常.所以,显然图书馆没有正确链接.所以我尝试编写一个与共享库链接的丢弃C++程序,它运行正常.然后我意识到一些非常奇怪的事情distutils,因为如果我添加一个链接到伪造库名称的编译参数,distutils只会编译所有内容而没有问题:
module.extra_compile_args = ['--std=c++0x', '-l some_fake_library'];
Run Code Online (Sandbox Code Playgroud)
当我运行时setup.py build,构建运行没有错误!
那么,这里发生了什么?如何编译需要链接到共享库的扩展模块?
| 归档时间: |
|
| 查看次数: |
4041 次 |
| 最近记录: |