可以在不写入磁盘的情况下编译文件吗?

可以在不写入磁盘的情况下编译文件吗?

我想从 C/C++ 程序中编译一些代码。下面是它的工作原理。我会在内存中有一个缓冲区(动态分配),其中包含构成 C 代码的 ASCII 文本。从我的 C/C++ 中,我会fork()调用exec()系统上的 C 编译器来编译内存中的代码。

所以我想知道,有没有一种方法可以直接访问gcc我的代码(比如使用管道或其他东西?)或者我是否必须将其写入磁盘,并读取它从磁盘?

答案1

这很容易被你自己测试过。

echo -e '#include <stdio.h>\nmain() {\nputs("hello, world");\n}' |
    gcc -x c -pipe -

./a.out

答案2

您将使用编译器的库版本来编译代码。对于所有主要编译器来说,这都有很好的记录。

  • 海湾合作委员会:libgccjit
  • clang:libclang / 直接对抗 llvm / clangDriver
  • TCC(仅限 C):libtcc(因为当然Fabrice Bellard 编写了现有最节省空间的 C 编译器之一。)

相关内容