2013-11-04 19 views
13
rvm install 1.9.3 

prowadzi do błędu w make.log:Jak skompilować ruby ​​za pomocą RVM na systemie o niskiej pamięci?

... 
compiling ./enc/trans/emoji_sjis_docomo.c 
compiling ./enc/trans/emoji_sjis_kddi.c 
gcc: internal compiler error: Killed (program cc1) 
gcc: internal compiler error: Killed (program cc1) 
gcc: internal compiler error: Killed (program cc1) 
Please submit a full bug report, 
with preprocessed source if appropriate. 
... 

dmesg pokazuje

[180031.341709] send sigkill to 3705 (cc1), adj 0, size 3394 

free pokazy w pewnym momencie procesu docierania Configure

   total  used  free  shared buffers  cached 
Mem:  241668  238676  2992   0   92  2020 
-/+ buffers/cache:  236564  5104 
Swap:  262140  262140   0 

więc zakładam że 256 MB pamięci RAM i 256 MB wymiany to nie enou gh, aby skompilować na nim Ruby.

Czytałem, że powinno być możliwe za pomocą kilku parametrów dla gcc, patrz: http://hostingfu.com/article/compiling-with-gcc-on-low-memory-vps

Ale

rvm install 1.9.3 --with-CFLAGS="$CFLAGS --param ggc-min-expand=0 --param ggc-min-heapsize=8192" 

Nie działa dać flagi do gcc, dziennik jest wciąż taka sama dla flagi:

command(2): __rvm_make -j4 
     CC = gcc 
     LD = ld 
     LDSHARED = gcc -shared 
     CFLAGS = -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-fiel$ 
     XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT 
     CPPFLAGS = -I. -I.ext/include/x86_64-linux -I./include -I. 
     DLDFLAGS = -Wl,-soname,libruby.so.1.9 
     SOLIBS = -lpthread -lrt -ldl -lcrypt -lm 

Jak skompilować ruby ​​na tej maszynie?

+1

spróbuj 'rvm install 1.9.3 - CFLAGS =" $ CFLAGS --param ggc-min-expand = 0 --param ggc-min-heapsize = 8192 "' – mpapis

+0

'[205242.284757] wyślij także sigkill do 17549 (cc1), adj 0, rozmiar 11726' . Teraz make.log ma następujące CFLAGS: 'CFLAGS = --param ggc-min-expand = 0 --param ggc-min-heapsize = 8192 -fPIC' Brak niektórych flag, które są wyświetlane na początku/powyżej. make.log kontynuuje: '.. konfiguracja -test-/funcall konfiguracja -test-/obciążenie/dot.dot gcc: wewnętrzny błąd kompilatora: Zabity (program CC1) gcc: wewnętrzny błąd kompilatora: Zabity (program cc1) W razie potrzeby prześlij pełny raport o błędzie, z wstępnie przetworzonym źródłem. .. ' i kończy ' konfiguracyjnym zlib' – marc

+0

eksportowany zmienną CFLAG, teraz jest 'echo $ CFLAGS': ' CFLAGS = --param GGC-min-expand = 0 --param GGC-min- heapsize = 8192 -fPIC'. 'rvm reinstall 1.9.3' prowadzi do make.log' CFLAGS = --param ggc-min-expand = 0 --param ggc-min-heapsize = 8192 -fPIC' i tego samego wyjścia z pamięci. – marc

Odpowiedz

27

Utworzenie pliku wymiany o wielkości 512 MB rozwiązało problem. Oto kroki:

sudo mkdir -p /var/cache/swap/ 
sudo dd if=/dev/zero of=/var/cache/swap/swap0 bs=1M count=512 
sudo chmod 0600 /var/cache/swap/swap0 
sudo mkswap /var/cache/swap/swap0 
sudo swapon /var/cache/swap/swap0 

Plik wymiany nie jest używany po ponownym uruchomieniu. Może być zintegrowany w /etc/fstab go używać po restarcie:

/var/cache/swap/swap0 none swap sw  0 0 

powyższe kroki, aby utworzyć swap plik znalazłem tutaj (w języku niemieckim): http://wiki.ubuntuusers.de/Swap#Swap-als-Datei - licencja powyższej treści: http://creativecommons.org/licenses/by-nc-sa/2.0/de/deed.en (Attribution-NonCommercial- ShareAlike 2.0 Niemcy (CC BY-NC-SA 2.0 DE))