2014-09-04 2 views
-3

Можно ли полностью скомпилировать и запустить программу C/C++ в памяти без необходимости доступа к диску?компиляция и запуск программ c/C++ в памяти

Обычно в редакторе записывается программа C/C++, сохраняется на диск (в файле) и затем компилируется. Компиляция создает исполняемый файл на диске, который запускается, чтобы убедиться, что он работает правильно. Я хочу написать программу, сохранить в файл, вызвать gcc/g ++ таким образом, чтобы он создавал машинный код, но напрямую загружал его в память. Поэтому, когда я удовлетворен выходом программы, я могу снова вызвать gcc/g ++ (как обычно) для создания исполняемого файла на диске.

+2

Да, системы без дисков делают это все время –

+0

Хотелось бы узнать, как это сделать в системах с диском. – Prithviraj

+0

Используйте RAM-диск. FWIW, вопрос не имеет ничего общего с программированием или C/C++ и принадлежит на другом сайте. Конечно, вы также можете быть приятно удивлены, узнав, что современные системы имеют что-то известное как дисковый кеш. И компиляция C/C++, как правило, связана с ЦП. –

ответ

1

Чтобы избежать некоторых временных файлов, вы можете использовать gcc -pipe. И вы можете передать исходный код в GCC на gcc -xc -. Вы даже можете иметь GCC написать свой вывод на стандартный вывод:

echo 'int main() {}' | gcc -xc - -S -o - 

После того, как вы сделали все, что вы остались с парой вопросов: где взять GCC из (! Обычно это на диске), и где получите файлы #include и библиотеки, которые вам нужны (то же самое). Вы можете установить GCC (он поставляется со стандартной библиотекой) на RAM-диск (посмотрите на /dev/shm), но действительно ли это то, что вы пытаетесь выполнить?

Вы не собираетесь ускорять компиляцию таким образом. Документы GCC говорят так же, как -pipe. Если вам нужна более быстрая компиляция, улучшите исходный код, внедрите параллельную систему сборки (make -j) и/или используйте более быстрый компоновщик, например Gold вместо классического BFD.

0

Да, вы можете. Простым способом является использование tmpfs.

Смежные вопросы