最近在編譯更新過的4.0項目,之前都編譯的好好的,今天卻出現了下面的error:
target SharedLib: libwebcore (out/target/product/xxxx/obj/SHARED_LIBRARIES/libwebcore_intermediates/LINKED/libwebcore.so) collect2: ld 以訊號 9 [已殺死] 退出。
看樣子是檔案都已經編譯好了,只是在要去link庫的時候出錯,collect2: ld 以訊號 9 [已殺死] 退出,像是記憶體不足;
先看了下webcore最近的幾次修改,只是很普通的代碼修改,沒有mk檔案相關的變動,所以出問題的幾率不大;
之後就懷疑是gcc編譯器的問題,看了下使用的gcc,版本是4.3,換成高版本試了一下,4.5和4.4都還是同樣的編譯錯誤;
所以最後懷疑,是自己的ubutu系統問題,collect2: ld 以訊號 9 [已殺死] 退出,這裡的訊號9我不太瞭解是什麼意思,網上查了一下,貌似是說數組過大,並不具體;我知道訊號7錯誤是指記憶體太小,所以嘗試去看下記憶體;
free -m
root@desktop-ubuntu:~# free -m total used free shared buffers cachedMem: 1976 1916 60 0 718 523-/+ buffers/cache: 674 1302Swap: 256 0 256
汗啊,我的swap分區才256M,系統是用wubi裝的,swap分區是自動化佈建的,我一直用的好好的 ,沒出啥問題,就一直沒管,看來ubuntu裝完還是需要改下這個swap空間的。
我的記憶體是2G的,所以把swap空間提升到2G後,libwebcore順利編譯通過;
swap空間提升步驟:
1. cd /host/ubuntu/disks/
2. sudo swapoff swap.disk
3. sudo rm swap.disk
4. sudo dd if=/dev/zero of=swap.disk bs=1M count=2k (建立2G的swap, 這步比較慢)
5. sudo mkswap -f swap.disk
6. sudo swapon /host/ubuntu/disks/swap.disk (這步更慢,大概1分鐘不到)
至此運行free命令,應該看到swap已經和記憶體一樣大了