Я пытаюсь скомпилировать мой C-проект в Ubuntu (32bit), работающий в VirtualBox. Компиляция рассматриваемого кода требует довольно много памяти, по крайней мере, 3 гигабайта. Поэтому я дал ВМ 2 гига. Вместе с 2 гигабайтами пространства подкачки, этого должно быть достаточно. По какой-то причине gcc не работает с ошибкой нехватки памяти после того, как он выделил 900 мег или около того. Увеличение объема памяти до 2,7 гигабайт (максимально допустимое для VirtualBox) не помогло. Кажется, существует ограничение на количество памяти, которое может использовать процесс. Но когда я запускаю ulimit
, он показывает "безлимитный".
ОБНОВЛЕНИЕ - Вот журнал make:
libtool: compile: cc -msse2 -I. -I/home/cleong/qb -DPHP_ATOM_INC -I/home/cleong/qb/include -I/home/cleong/qb/main -I/home/cleong/qb -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS = 64 -DHAVE_CONFIG_H -g -O2 -c /home/cleong/qb/qb_interpreter_gcc.c -fPIC -DPIC -o .libs /qb_interpreter_gcc.o
cc1: из памяти выделено 408 байт после 924852224 байт
make: *** [qb_interpreter_gcc.lo] Ошибка 1
Вывод из /bin /time -v:
Command exited with non-zero status 2
Command being timed: "make"
User time (seconds): 62.09
System time (seconds): 11.28
Percent of CPU this job got: 64%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:53.02
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 1848592
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 9433
Minor (reclaiming a frame) page faults: 1391779
Voluntary context switches: 5642
Involuntary context switches: 6069
Swaps: 0
File system inputs: 630360
File system outputs: 1376
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 2
Версия gcc - 4.7.2.
Исходный код здесь:
https://github.com/chung-leong/qb
Это расширение PHP. Процесс сборки использует phpize.
ОБНОВЛЕНИЕ - Я сталкиваюсь с той же проблемой в 32-разрядной версии Mageia 3, которая также включает в себя gcc 4.7.2. Сбой происходит на уровне около 2,7 гига вместо. В 64-битной среде этого не происходит.
Если я установлю gcc 4.6.3 и соберусь с его помощью, это сработает.