2014-09-04 55 views
-3

我们可以在不需要磁盘访问的情况下完全在内存中编译和运行C/C++程序吗?编译并运行内存中的c/C++程序

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

+2

是的,没有磁盘的系统一直在做它 – 2014-09-04 10:07:13

+0

我想知道那么在磁盘系统上如何做到这一点。 – Prithviraj 2014-09-04 10:09:50

+0

使用RAM磁盘。 FWIW,这个问题与编程或C/C++无关,属于不同的站点。当然,你也可能会惊喜地发现现代系统有一些被称为磁盘缓存的东西。无论如何,C/C++编译通常都是CPU绑定的。 – 2014-09-04 10:12:48

回答

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。

0

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