LD arch/x86/vdso/built-in.o LD arch/x86/built-in.o LD drivers/built-in.o ld: final link failed: Memory exhausted make[1]: *** [drivers/built-in.o] 錯誤 1 make: *** [drivers] 錯誤 2
去網上搜了一下,也有人遇到這樣的問題,如下:
今天在32bit Ubuntu上面編譯Chromium 11 Debug版,報告一個很郁悶的內存用光錯誤。
- carl@carl-ubuntu-t400:/work/chromium11/src$ make out/Debug/chrome
- ACTION Extracting last change to /work/chromium11/src/out/Debug/obj/gen/build/LASTCHANGE out/Debug/obj/gen/build/LASTCHANGE.always
- LINK(target) out/Debug/chrome
- /usr/bin/ld: final link failed: Memory exhausted
- collect2: ld returned 1 exit status
- make: *** [out/Debug/chrome] 錯誤 1
仔細檢查了link過程中的內存耗用,物理內存基本用光,swap沒用到100M就掛了。
后來到網上搜尋了下幫助,據說有可能是ulimit的設置問題,看了下自己的設置:
- carl@carl-ubuntu-t400:/work/chromium11/src$ ulimit -a
- core file size (blocks, -c) 0
- data seg size (kbytes, -d) unlimited
- scheduling priority (-e) 20
- file size (blocks, -f) unlimited
- pending signals (-i) 16382
- max locked memory (kbytes, -l) 64
- max memory size (kbytes, -m) unlimited
- open files (-n) 1024
- pipe size (512 bytes, -p) 8
- POSIX message queues (bytes, -q) 819200
- real-time priority (-r) 0
- stack size (kbytes, -s) 8192
- cpu time (seconds, -t) unlimited
- max user processes (-u) unlimited
- virtual memory (kbytes, -v) unlimited
- file locks (-x) unlimited
將stack size調整了下,重新link,成功!
- carl@carl-ubuntu-t400:/work/chromium11/src$ ulimit -s 16384
由於這種大程序link可能耗光物理內存,所以一定要注意機器散熱,內存稍有不穩定,可能連Memory exhausted錯誤都看不到,而是segment fault。