【问题标题】:setting compile arguments in setup.py file (Or linker arguments? -lrt?)在 setup.py 文件中设置编译参数(或链接器参数?-lrt?)
【发布时间】:2018-08-21 16:46:48
【问题描述】:

下面是我设置 python 包装器的设置文件。我遇到的问题是,在我正在编写的 c 代码中,出于分析原因,我正在调用 clock_gettime。问题是当我尝试导入模块时,我得到以下信息:error undefined symbol: clock_gettime。我知道我需要使用 -lrt 进行编译,但显然我的编译器没有获得该标志。我究竟做错了什么?

from distutils.core import setup, Extension
import os


module1 = Extension('relaymod',
    extra_compile_args = ["-lrt"], #flag so compiler links to realtime lib
    sources=['relaymodule.c']

    )


setup (name = 'relaymod',
    version = '1.0',
    description = "CTec Relay Board controller",
    author='Richard Kelly',
    url='site',
    ext_modules=[module1])

编辑: 查看distutils.core 文档我相信我需要设置extra_link_args 下面是我的新更改,但我现在收到此错误:NameError: name 'extra_link_args' is not defined

EDIT2:好的,下面的代码现在可以工作了。发生了一些事情。在我删除了构建文件夹并重建它之后。

from distutils.core import setup, Extension
import os


module1 = Extension('relaymod',
    extra_link_args=["-lrt"],
    sources=['relaymodule.c']

    )


setup (name = 'relaymod',
    version = '1.0',
    description = "CTec Relay Board controller",
    author='Richard Kelly',
    url='site',
    ext_modules=[module1])

【问题讨论】:

    标签: python linux python-2.7 wrapper setuptools


    【解决方案1】:

    您缺少等号 (=),您需要说 extra_link_args=[您的链接参数列表]

    根据 cmets 更新:

    重试前删除构建文件夹

    【讨论】:

    • 很好,但我仍然收到'未定义符号:clock_gettime'
    • 我认为您需要使用破折号 ["-lrt"] 传递参数
    • 让它现在工作......一旦我删除了构建文件夹并重新构建,它就工作了。如果您想在答案中写下来,我会接受。感谢您的帮助!
    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2013-11-15
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多