使用G++动态编译C++代码片段

Compile a C++ code snippet using G++ dynamically

本文关键字:代码 片段 C++ 编译 G++ 动态 使用      更新时间:2023-10-16

在基于C++的应用程序上工作时,它接受用户输入,生成一个C++函数并编译它以创建.so文件,并将该函数链接到主应用程序。目前必须调用一个外部命令"g++"才能完成。不知道是否有可能调用某种函数,比如"compile",它将代码段作为输入并生成.so。更准确地说,我需要一个具有以下语法的函数:

sizeOfObjBuf = compile(codeBuf, objBuf);

第一个参数是包含代码片段的以null结尾的字符串,第二个参数是保存编译代码的输出缓冲区,它返回编译代码的大小。

整个想法是摆脱对外部程序(g++)的依赖,这样应用程序就可以在任何Linux系统上运行(即使它没有安装g++)。

谢谢。

恐怕答案是"否"。

您可以通过在单独的进程中执行G++(或其他编译器)并等待它完成来实现该函数,但这仍然需要用户安装编译器。

没有C++编译器,就无法编译C++代码。

我不会做研究来弄清楚它是如何做到的,但我相信LLVM C++编译器可以用这种方式。理论上,LLVM的所有部分都设计为作为库运行。

好吧,经过一点研究,我发现:http://clang.llvm.org/docs/LibTooling.html