如何在Python的setup.py脚本中传递标志给gcc?

23 投票
1 回答
20096 浏览
提问于 2025-04-15 15:40

我正在用C语言写一个Python扩展,这个扩展需要用到CoreFoundation框架(还有其他一些东西)。用以下命令编译是没问题的:

gcc -o foo foo.c -framework CoreFoundation -framework Python

(“-framework”是苹果特有的gcc扩展,不过没关系,因为我本来就是在用他们的框架)

我该怎么告诉setup.py把这个标志传给gcc呢?

我试过这个,但似乎不太行(虽然编译没问题,但运行时却报了未定义符号的错误):

from distutils.core import setup, Extension
setup(name='foo',
      version='1.0',
      author='Me',
      ext_modules=[Extension('foo',
                             ['foo.c'],
                             extra_compile_args=['-framework CoreFoundation'])])

编辑:

看起来这个方法有效:

from distutils.core import setup, Extension
setup(name='foo',
      version='1.0',
      author='Me',
      ext_modules=[Extension('foo',
                             ['foo.c'],
                             extra_link_args=['-framework', 'CoreFoundation'])])

1 个回答

19

也许你还需要设置一下 extra_link_args 呢? extra_compile_args 是在编译源代码的时候用的,而 extra_link_args 是在把编译结果链接起来的时候用的。

撰写回答