我们可以在内存中完全编译和运行C / C ++程序而无需磁盘访问吗?
通常一个人在编辑器中编写一个C / C ++程序,保存到磁盘(在文件中)然后编译它。编译在磁盘上创建可执行文件,运行该文件以查看它是否正常工作。我想要做的是编写一个程序,保存到文件,调用gcc / g ++,使其创建机器代码,但直接将其加载到内存中运行。所以一旦我对程序输出感到满意,我可以再次调用gcc / g ++(通常就是这样)来在磁盘上创建可执行文件。
答案 0 :(得分:1)
您可以使用gcc -pipe
来避免某些临时文件。您可以通过gcc -xc -
将源代码传递到GCC。您甚至可以让GCC将其输出写入stdout:
echo 'int main() {}' | gcc -xc - -S -o -
完成所有这些后,您将面临几个问题:从哪里获取GCC(通常是在磁盘上?),以及从哪里获取所需的#include和库文件(同上)。您可以将GCC(它带有标准库)安装到RAM磁盘上(查看/dev/shm
),但这真的是您要完成的吗?
你不会以这种方式加速编译。海湾合作委员会的文件对-pipe
说了很多。如果您想要更快的编译,改进源代码,实现并行构建系统(make -j
),和/或使用更快的链接器,如Gold而不是经典的BFD。
答案 1 :(得分:0)
是的,你可以。一种简单的方法是使用tmpfs。