Compiling in low-memory conditions

Tom Ritter tom at
Mon Apr 4 00:51:42 CEST 2011

I was compiling libgcrypt and gnupg on a low-memory VPS, and ran into
a few problems. First, I compiled libgcrypt, and ran into a gcc crash,
when it ran out of memory trying to compile twofish.o.  It looked like

gcc -DHAVE_CONFIG_H -I. -I.. -I../src -I../src -I/usr/local/include -g
-O2 --param ggc-min-expand=0 --param ggc-min-heapsize=32768
-fvisibility=hidden -Wall -MT twofish.lo -MD -MP -MF .deps/twofish.Tpo
-c twofish.c  -fPIC -DPIC -o .libs/twofish.o

cc1: out of memory allocating 3082800 bytes after a total of 4681728 bytes
make[2]: *** [twofish.lo] Error 1

I worked around that, I'll explain in a minute but I did compile
libgcrypt, and moved onto gnupg.  For gnupg I ran ./configure and
after installing the libraries I needed, I began to compile gnupg.
However it failed with an error about missing zlib.h - I would have
though configure would pick that up.  But no worries, after getting
it, I continued the compile and ran into the same gcc out-of-memory
crashes on :
 - keyedit.o
 - gpg.o
 - keygen.o

To get around the out of memory issue, I tried using ulimit, but this
did not help.  What did work was editing the Makefile and temporarily
setting the optimization level to -O0.  After the module was compiled
I killed the build, and set it back to O2.  Repeating for each module
that crashed it.  I don't know if there's any way this could be
prevented without unnecessary work, so I mainly just wanted to
document it for anyone who ran into the same problem as me.

Finally, i believe the 'status_codes.h' getting deleted that I
reported last summer[1] is still active.



More information about the Gcrypt-devel mailing list