是否可以使用python编译c代码?

是否可以使用python编译c代码?,python,c,compiler-construction,compilation,compiler-errors,Python,C,Compiler Construction,Compilation,Compiler Errors,我想构建一个python程序,该程序以.c文件的路径作为输入,然后编译它的 如果编译成功,程序将向屏幕输出OK,否则输出BAD 我一直在用谷歌搜索,但什么也找不到。我还尝试在python中使用编译程序的参数运行cmd,但没有成功 澄清一下——我已经在我的机器上安装了一个非常特殊的编译器,我想运行它。我不想让python充当编译器。只要得到一个代码,运行我的编译器,看看答案是什么 它应该可以在带有python 2.4的Linux服务器上运行 谢谢当然可以,为什么不呢?当然,您需要安装GCC(或

我想构建一个python程序,该程序以.c文件的路径作为输入,然后编译它的

如果编译成功,程序将向屏幕输出OK,否则输出BAD

我一直在用谷歌搜索,但什么也找不到。我还尝试在python中使用编译程序的参数运行cmd,但没有成功

澄清一下——我已经在我的机器上安装了一个非常特殊的编译器,我想运行它。我不想让python充当编译器。只要得到一个代码,运行我的编译器,看看答案是什么

  • 它应该可以在带有python 2.4的Linux服务器上运行

谢谢

当然可以,为什么不呢?当然,您需要安装GCC(或llvm),以便可以使用它进行编译。您可以使用os.system或任何其他方式调用外部程序

当然,你最好看看这样的东西,它已经存在来解决这个问题


另外,为了回答实际提出的问题,没有什么可以阻止您用python编写编译器/汇编器/链接器,它们只是与其他任何程序一样的程序。不过,性能可能不是很好。

步骤1。去睡觉吧。pythonlex和Yacc

第二步。查找C的Yacc/Lex配置

第三步。调整PLY以使用找到的C语言规则


第四步。跑您正在“编译”C代码——检查语法。

如果我理解得很清楚,您只想使用python中的一些参数运行编译器吗

在这种情况下,您可以只使用os.system


或者更好的方法是模块“子流程”

您可以只使用标准库编译C代码,并且它可以在每个平台和每个Python版本上运行(假设您确实有可用的C编译器)。查看Python用来编译C扩展模块的模块。一个简单的例子:

//main.c
#包括
int main(){
printf(“你好,世界!\n”);
返回(0);
}
编译脚本:

# build.py
from distutils.ccompiler import new_compiler

if __name__ == '__main__':
    compiler = new_compiler()
    compiler.compile(['main.c'])
    compiler.link_executable(['main.o'], 'main')

其他一切(包括路径、库路径、自定义标志或链接参数或宏)都可以通过各种配置选项传递。查看模块文档的上述链接以了解更多信息。

您可以查看distutils,但所要做的只是为gcc或类似编译器提供一个python层,最终python将不会进行编译,并且将具有依赖性。有一个不错的Pycon对话可能会对您有所帮助。如果您想运行编译器,您只是在用Python运行一个子流程。在这种情况下,这个问题与试图在Python下运行子流程的所有其他问题完全相同。关上它。以下是所有相关问题,它们提供了大致相同的答案。他们都回答了“澄清”的问题。烤饼在这方面有什么帮助。你能详细说明一下吗?