【问题标题】:Using clang with Cython在 Cython 中使用 clang
【发布时间】:2020-10-08 13:34:33
【问题描述】:

我通过指定 CC 环境变量来强制 Cython 使用 clang:

import os
os.environ['CC'] = 'clang'

我有一个标准版本:

EXT_MODULES = [Extension('example.src.ex',
                         sources=['example/src/ex.pyx'])]

setup_info = dist(
    ...
    ext_modules=cythonize(EXT_MODULES,
                          compiler_directives={'language_level': '3'}),
    ...
)
setup(**setup_info)

但是,Cython 似乎在构建步骤的不同部分中以某种方式同时使用了 clang 和 gcc,特别是它使用 gcc 来构建共​​享库:

running build_ext
building 'example.src.ex' extension
creating build/temp.linux-x86_64-3.8
creating build/temp.linux-x86_64-3.8/example
creating build/temp.linux-x86_64-3.8/example/src
clang -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/local/include/python3.8 -c example/src/ex.c -o build/temp.linux-x86_64-3.8/example/src/ex.o
creating build/lib.linux-x86_64-3.8
creating build/lib.linux-x86_64-3.8/example
creating build/lib.linux-x86_64-3.8/example/src
gcc -shared -Wl,--strip-all build/temp.linux-x86_64-3.8/example/src/ex.o -L/usr/local/lib -o build/lib.linux-x86_64-3.8/example/src/ex.cpython-38-x86_64-linux-gnu.so

如何让 Cython 在两个步骤中都使用 clang?

【问题讨论】:

    标签: python python-3.x clang cython cythonize


    【解决方案1】:

    我意识到 distutils 也需要覆盖链接器

    os.environ['LDSHARED'] = 'clang -shared'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-15
      • 2018-08-25
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      相关资源
      最近更新 更多