最近在编译更新过的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 cached
Mem: 1976 1916 60 0 718 523
-/+ buffers/cache: 674 1302
Swap: 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已经和内存一样大了