使用G++动态编译C++代码片段
Compile a C++ code snippet using G++ dynamically
在基于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
相关文章:
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- 这两个代码片段相似,但显示的结果不同
- 如何替换此示例代码片段中已弃用的handler_type_t或 boost::asio::handler_type?
- 如果我在下面的代码片段中添加"delete[] d;",为什么我得到零?
- 我遇到了这个代码片段,不明白. 它递归检查 C++ 字符串中是否存在大写字符
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- 提取狮身人面像文档中的C++代码片段
- 为什么此代码片段有效?如何取消引用空点?
- 无法在这个基本的Qt代码片段中找到错误,但我被告知它肯定存在?
- 这个代码片段中会发生死锁吗?为什么
- 这个代码片段中的while循环是如何工作的
- 在给定的代码中,有人可以解释一下(int i = 0; i<len; i++)count[str[i]]++的代码片段;
- 为什么我的C++代码在以下打印链表的代码片段中显示分段错误?
- 为什么这两个代码片段具有相同的效果?
- 以下代码片段的时间复杂度是多少?
- 为什么以下代码片段存在编译错误
- 如何在此代码片段中创建 begin() 指针
- 为什么这个简短的模板代码片段有效
- 为什么这个代码片段在 C 和 C++ 中生成完全不同的汇编代码?
- 我应该修复这个晦涩而优雅的C 代码片段吗?