Memory 编译和运行c/c++;内存中的程序

Memory 编译和运行c/c++;内存中的程序,memory,compilation,Memory,Compilation,我们是否可以完全在内存中编译和运行C/C++程序,而不需要访问磁盘 通常人们在编辑器中编写一个C/C++程序,保存到磁盘(在文件中),然后进行编译。编译将在磁盘上创建可执行文件,运行该文件以查看其是否正常工作。我想做的是编写一个程序,保存到文件中,调用gcc/g++以创建机器代码,但直接将其加载到内存中运行。因此,一旦我对程序输出感到满意,我就可以再次调用gcc/g++(通常是这样)在磁盘上创建可执行文件。您可以使用gcc-pipe来避免一些临时文件。您可以通过GCC-xc-将源代码导入GCC。

我们是否可以完全在内存中编译和运行C/C++程序,而不需要访问磁盘


通常人们在编辑器中编写一个C/C++程序,保存到磁盘(在文件中),然后进行编译。编译将在磁盘上创建可执行文件,运行该文件以查看其是否正常工作。我想做的是编写一个程序,保存到文件中,调用gcc/g++以创建机器代码,但直接将其加载到内存中运行。因此,一旦我对程序输出感到满意,我就可以再次调用gcc/g++(通常是这样)在磁盘上创建可执行文件。

您可以使用
gcc-pipe
来避免一些临时文件。您可以通过
GCC-xc-
将源代码导入GCC。您甚至可以让GCC将其输出写入标准输出:

echo 'int main() {}' | gcc -xc - -S -o -
完成所有这些之后,您将面临两个问题:从何处获取GCC(通常在磁盘上!),以及从何处获取所需的#include和library文件(同上)。您可以将GCC(它附带一个标准库)安装到RAM磁盘上(查看
/dev/shm
),但这真的是您想要实现的吗


这样做不会加快编译速度。GCC文档对
-pipe
也有同样的说明。如果您想要更快的编译,请改进源代码,实现并行编译系统(
make-j
),和/或使用更快的链接器,如Gold而不是classic BFD。

是的,您可以。一个简单的方法是使用tmpfs。

是的,没有磁盘的系统总是这样做。我想知道如何在有磁盘的系统上这样做。使用RAM磁盘。FWIW,这个问题与编程或C/C++无关,属于另一个站点。当然,您可能也会惊喜地发现,现代系统中有一种称为磁盘缓存的东西。考虑到大部分编译时间都花在从磁盘读取大量头文件、分析和优化代码上,我看不出所建议的节省有多大意义。