2013-11-04 37 views
13
rvm install 1.9.3 

導致錯誤的make.log裏:如何在低內存系統上使用RVM編譯ruby?

... 
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顯示

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

free顯示了在一些點上運行配置過程:

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

所以我假設256MB RAM和256MB交換不是enou gh來編譯Ruby。

,我讀了它應該有可能使用gcc的一些參數,請參閱: http://hostingfu.com/article/compiling-with-gcc-on-low-memory-vps

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

不工作給予標誌,以GCC,日誌仍是相同的標誌:

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 

如何編譯該機器上的紅寶石?

+1

嘗試'rvm install 1.9.3 - CFLAGS =「$ CFLAGS --param ggc-min-expand = 0 --param ggc-min-heapsize = 8192「' – mpapis

+0

'[205242.284757]發送sigkill到17549(cc1),adj 0,大小11726' 以及。現在,make.log中有這些CFLAGS: 'CFLAGS = - 參數ggc-min-expand = 0 - 參數ggc-min-heapsize = 8192 -fPIC' 有些標誌丟失,最初顯示在上面。 make.log裏繼續: '.. 配置-test-/funcall 配置-test-負載/ dot.dot GCC /:內部編譯器錯誤:殺死(程序CC1) GCC:內部編譯器錯誤:殺(程序cc1) 請提交一份完整的錯誤報告, 與預處理源(如果適用)。 .. ' 並用 '配置zlib' – marc

+0

出口CFLAG可變結束,現在它是'回聲$ CFLAGS': 'CFLAGS = --param GGC-分鐘展開= 0 --param GGC-MIN- heapsize = 8192 -fPIC'。 'rvm reinstall 1.9.3'會導致make.log'CFLAGS = --param ggc-min-expand = 0 --param ggc-min-heapsize = 8192 -fPIC'和相同的內存溢出。 – marc

回答

27

創建一個512MB交換文件解決了這個問題。以下是步驟:

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 

重新啓動後不使用交換文件。它可以集成在/etc/fstab重啓後使用它:

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

上述步驟來創建一個交換文件,我發現這裏(德國):http://wiki.ubuntuusers.de/Swap#Swap-als-Datei - 許可上述內容:http://creativecommons.org/licenses/by-nc-sa/2.0/de/deed.en(署名 - NonCommercial- ShareAlike 2.0德國(CC BY-NC-SA 2.0 DE))

相關問題