Search
Categories
Ad

Fail to compile Ruby1.9 on VPS because of the RAM size.

Problem

You want to compile ruby1.9, but failed with errors:

gcc -I. -I.ext/include/i686-linux -I./include -I. -D_FILE_OFFSET_BITS=64  -DONIG_ENC_REGISTER=rb_enc_register -fPIC  -O2 -g -Wall -Wno-parentheses  -o enc/trans/gb18030.o -c ./enc/trans/gb18030.c
virtual memory exhausted: Cannot allocate memory
make[1]: *** [enc/trans/gb18030.o] Error 1
make[1]: Leaving directory `/home/roiadmin/tmp/ruby-1.9.1-p129'
make: *** [trans] Error 2

You maybe tried changing ulimit values or add gcc-min-heapsize parameters, but all failed in vain.

Solution

The best way to do so is remove gb18030.c from compilation packages. Hope you are not planning to use Chinese GB18030 encoded-strings in Ruby.
The compile instructions are written in “enc.mk”. So all you need to do is delete all lines about gb18030 in “enc.mk”.

If you are compileing 1.9.1-p129, you can use this patch file.

*** enc.mk.org	Wed Jun 17 21:36:49 2009
--- enc.mk	Wed Jun 17 21:38:44 2009
***************
*** 79,85 ****
  	  enc/euc_kr.$(OBJEXT) \
  	  enc/euc_tw.$(OBJEXT) \
  	  enc/gb2312.$(OBJEXT) \
- 	  enc/gb18030.$(OBJEXT) \
  	  enc/gbk.$(OBJEXT) \
  	  enc/iso_8859_1.$(OBJEXT) \
  	  enc/iso_8859_2.$(OBJEXT) \
--- 79,84 ----
***************
*** 113,119 ****
  	 $(ENCSODIR)/euc_kr.$(DLEXT) \
  	 $(ENCSODIR)/euc_tw.$(DLEXT) \
  	 $(ENCSODIR)/gb2312.$(DLEXT) \
- 	 $(ENCSODIR)/gb18030.$(DLEXT) \
  	 $(ENCSODIR)/gbk.$(DLEXT) \
  	 $(ENCSODIR)/iso_8859_1.$(DLEXT) \
  	 $(ENCSODIR)/iso_8859_2.$(DLEXT) \
--- 112,117 ----
***************
*** 147,153 ****
  TRANSCSRCS = enc/trans/big5.c \
  	     enc/trans/chinese.c \
  	     enc/trans/escape.c \
- 	     enc/trans/gb18030.c \
  	     enc/trans/gbk.c \
  	     enc/trans/iso2022.c \
  	     enc/trans/japanese.c \
--- 145,150 ----
***************
*** 161,167 ****
  	    enc/trans/big5.$(OBJEXT) \
  	    enc/trans/chinese.$(OBJEXT) \
  	    enc/trans/escape.$(OBJEXT) \
- 	    enc/trans/gb18030.$(OBJEXT) \
  	    enc/trans/gbk.$(OBJEXT) \
  	    enc/trans/iso2022.$(OBJEXT) \
  	    enc/trans/japanese.$(OBJEXT) \
--- 158,163 ----
***************
*** 175,181 ****
  	   $(ENCSODIR)/trans/big5.$(DLEXT) \
  	   $(ENCSODIR)/trans/chinese.$(DLEXT) \
  	   $(ENCSODIR)/trans/escape.$(DLEXT) \
- 	   $(ENCSODIR)/trans/gb18030.$(DLEXT) \
  	   $(ENCSODIR)/trans/gbk.$(DLEXT) \
  	   $(ENCSODIR)/trans/iso2022.$(DLEXT) \
  	   $(ENCSODIR)/trans/japanese.$(DLEXT) \
--- 171,176 ----
***************
*** 267,276 ****
  	@$(MAKEDIRS) "$(@D)"
  	$(LDSHARED) -o $@ enc/gb2312.$(OBJEXT) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
 
- $(ENCSODIR)/gb18030.$(DLEXT): enc/gb18030.$(OBJEXT)
- 	@$(MAKEDIRS) "$(@D)"
- 	$(LDSHARED) -o $@ enc/gb18030.$(OBJEXT) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
- 
  $(ENCSODIR)/gbk.$(DLEXT): enc/gbk.$(OBJEXT)
  	@$(MAKEDIRS) "$(@D)"
  	$(LDSHARED) -o $@ enc/gbk.$(OBJEXT) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
--- 262,267 ----
***************
*** 383,392 ****
  	@$(MAKEDIRS) "$(@D)"
  	$(LDSHARED) -o $@ enc/trans/escape.$(OBJEXT) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
 
- $(ENCSODIR)/trans/gb18030.$(DLEXT): enc/trans/gb18030.$(OBJEXT)
- 	@$(MAKEDIRS) "$(@D)"
- 	$(LDSHARED) -o $@ enc/trans/gb18030.$(OBJEXT) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
- 
  $(ENCSODIR)/trans/gbk.$(DLEXT): enc/trans/gbk.$(OBJEXT)
  	@$(MAKEDIRS) "$(@D)"
  	$(LDSHARED) -o $@ enc/trans/gbk.$(OBJEXT) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
--- 374,379 ----
***************
*** 451,460 ****
  	-@$(MAKEDIRS) "$(@D)"
  	$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(encsrcdir)/gb2312.c
 
- enc/gb18030.$(OBJEXT): $(encsrcdir)/gb18030.c
- 	-@$(MAKEDIRS) "$(@D)"
- 	$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(encsrcdir)/gb18030.c
- 
  enc/gbk.$(OBJEXT): $(encsrcdir)/gbk.c
  	-@$(MAKEDIRS) "$(@D)"
  	$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(encsrcdir)/gbk.c
--- 438,443 ----
***************
*** 567,576 ****
  	-@$(MAKEDIRS) "$(@D)"
  	$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(encsrcdir)/trans/escape.c
 
- enc/trans/gb18030.$(OBJEXT): $(encsrcdir)/trans/gb18030.c
- 	-@$(MAKEDIRS) "$(@D)"
- 	$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(encsrcdir)/trans/gb18030.c
- 
  enc/trans/gbk.$(OBJEXT): $(encsrcdir)/trans/gbk.c
  	-@$(MAKEDIRS) "$(@D)"
  	$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $(encsrcdir)/trans/gbk.c
--- 550,555 ----

Enjoy!

Tags:

Leave a Reply