> Hi, when compiling Icecat-24 I have four times done > './configure' successfully > but always failed at the end of 'make' with error msg > > /usr/bin/ld: final link failed: Memory exhausted [...] > My system has 3.1 Gb memory and I have tried to minimise > memory load.
It's a 32-bit system? The problem is amount of virtual memory, not RAM, assuming you have several gigabytes of swap. Possible solutions: - cross compile on a 64-bit system with more memory/swap - compile with -Wl,--reduce-memory-overheads and/or -Wl,--no-keep-memory: makes linking slower, but might fit in memory (there are also some other options that reduce resource usage at cost of the built binary's speed) - compile with the -g0 option, disable debug symbols: will make the resulting build impossible to debug, but will vastly reduce its size You can easily find what compiler flags are used by the Icecat build system. Looking for values like -O2 or -g in scripts and makefiles should help; I think it didn't trust the user-supplied options. I had the same issue when linking WebKit with debug symbols on MIPS N32 (64-bit registers, 32-bit pointers: only 2 GiB of virtual memory). Linking without debug symbols worked, while it wasn't useful when the binary crashed deep in WebKit code (memory alignment issue: it enabled alignment required by any MIPS on O32 only). With the above linker flags and debug symbols, linking took 17 minutes (1 GiB of RAM, a gigabyte of swap used), while it worked. I think Icecat enables debug symbols by default.
pgpyqehBzQGDo.pgp
Description: PGP signature
-- http://gnuzilla.gnu.org
