如何使用 LLVM 以编程方式编译 C 源文件

How to use LLVM to programatically compile C source files

提问人:phqb 提问时间:11/10/2023 更新时间:11/10/2023 访问量:53

问:

我的程序(用 C 编写)通过使用函数以编程方式执行 C 编译器 (clang) 命令,动态生成许多 C 源文件并将其编译为共享库(.so 文件)。然后,使用 将编译的 .so 文件加载到程序中。你可以把它看作是一个朴素的JIT编译器。这个想法是从本演示文稿的第 5 页借来的。system()dlopen()

生成到磁盘并编译我的 C 源文件的时间从 50 到 100 毫秒不等。 AFAIK,通过执行外部程序会产生开销,而 clang 也有启动开销。我减少开销的想法是使用 LLVM 作为库来编译 C 源文件。但我没有使用 LLVM 库的经验。system()

我的问题是:如何使用LLVM库复制命令?clang -O3 -shared <other options> <source file>.c -o <binary file>.so

c clang llvm jit

评论

1赞 arnt 11/10/2023
只需从 clang 内部复制编译器驱动程序即可。大约一千行代码 IIRC,您可能会获得 3-5% 或更低的加速。

答: 暂无答案