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

时间:2014-04-29 01:02:32

标签: c++ linux g++

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

sizeOfObjBuf = compile(codeBuf, objBuf);

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

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

感谢。

3 个答案:

答案 0 :(得分:1)

我害怕答案是"没有"。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

我不打算进行研究以弄清楚它是如何完成的,但我相信LLVM C ++编译器可以这种方式使用。 LLVM的所有部分都被设计为在理论上作为库运行。

好的,一点点研究,我发现了这个:http://clang.llvm.org/docs/LibTooling.html