是否可以在内存中使用Clang C ++ API使用Clang编译源代码?

时间:2014-05-26 06:36:04

标签: c++ ios clang

我想使用Clang编译源代码,没有运行可执行文件,但是通过API在内存中编译。我发现post有关如何执行此操作但Driver似乎在场景后面找到并运行clang / clang++ld等可执行文件:

  

输出显示Driver正在调用clang来进行编译   和ld做链接。如您所见,驱动程序添加了参数   除了我们传入的那些之外,每个调用都有它自己的   -v标志显示了如何调用编译器和链接器。

由于我要在iOS上运行,因此禁止运行新进程(禁止fork)并且路径完全不同。

那么有没有办法使用Clang API编译源代码而不运行可执行文件?

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。它是大多数OpenCL实现的工作方式 - 它们使用clangllvm库来构建单个可执行文件(通常),为CL运行的硬件生成代码。我相信CUDA做的事情非常相似,但我还没有研究过。

这并不容易,但我想我可能会在几天内出现并运行,也许是最糟糕的情况。我认为最大的问题是链接。特别是如果您实际上并不想生成可执行文件,而是在内存中执行代码" - 涉及分配具有执行权限的内存,然后加载代码,这通常是链接器和加载器负责的任务。