查找distutils的C编译器版本

2024-10-02 18:18:07 发布

您现在位置:Python中文网/ 问答频道 /正文

使用distutils构建CPython扩展的默认C编译器可通过

from distutils.ccompiler import new_compiler, get_default_compiler
cc=new_compiler(get_default_compiler())

因此,例如

cc.compile(["foo.c"])

将在foo.c上调用它。然后我们可以刮取foo.o的内容来获得编译器版本,比如

$ strings foo.o | grep GCC
GCC: (Gentoo 8.3.1-r2 p4) 8.3.1 20190518

然而,这(如果需要的话,当然也可以用Python编码)给我的印象是访问编译器版本的一种非常黑客的方式。还有更像Python的方式吗

不用说,可以很容易地找到这方面的用例,因为如果使用特定版本的编译器,有时需要添加特定的编译器选项(distutils允许这样做)


编辑: 一个人可以做这样的事情

_=cc.compile(['foo.c'],extra_preargs=['-dumpversion'])

并查看类似于8.3.1打印的内容(这是使用gcc),或者更详细的输出是使用--version而不是-dumpversion。当然比查看对象文件要好一点,但仍然不理想


Tags: 版本default内容newget编译器compilerfoo