Android编译错误处理make ......./noproguard.classes-with-local.dex] 已杀死。
今天在解决Daily build机器第一遍编译失败时,从网上获取一些消息,没有一个完整到方案,特整合供大家享用。
错误现象描述一:
Install: out/host/linux-x86/framework/dx.jar
Copy:dx (out/host/linux-x86/obj/EXECUTABLES/dx_intermediates/dx)
Install:out/host/linux-x86/bin/dx
target Dex:core
make:***
[out/target/common/obj/JAVA_LIBRARIES/core_intermediates/noproguard.classes-with-local.dex] 已杀死。
错误现象描述二:
collect2:ld terminated with signal 9 [Killed]
make:*** [out/host/linux-x86/obj/EXECUTABLES/clangobj/EXECUTABLES/clang_intermediates/clang] Error 1
make:*** Waiting for unfinished jobs....
开始怀疑是软件的环境没有搭建好导致或者工具的版本不对,后来通过free -m查
到内存快被耗光但是虚拟内存为0。通过增加虚拟内存解决该问题。
增加虚拟内存的方法如下:
查看内存空间大小:free -m // m表示显示的字节单位是m(megabytes)
下面我们就来增加系统的 Swap 大小。
1.首先用命令free查看系统内 Swap 分区大小。
free -m
total used free shared buffers cached
Mem: 1002 964 38 0 21 410
-/+ buffers/cache: 532 470
Swap: 951 32 929
可以看到 Swap 只有951M,不符合 Oracle-xe-client 的安装要求。
2.创建一个 Swap 文件。
mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=100000
出现下列提示,上面命令中的 count 即代表swap文件大小。
记录了 100000+0 的读入
记录了 100000+0 的写出(当然此处的count值是可以修改的)
102400000 字节 (102 MB) 已复制,0.74704 秒,137 MB/秒
把生成的文件转换成 Swap 文件
sudo mkswap swapfile
Setting up swapspace version 1, size = 102395 kB
no label, UUID=09fde987-5567-498a-a60b-477e302a988b
3.激活 Swap 文件。
sudo swapon swapfile
再次查看 free -m 的结果。
total used free shared buffers cached
Mem: 1002 967 34 0 22 410
-/+ buffers/cache: 534 467
Swap: 1053 32 1021
添加成功。
扩展:如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。
sudo swapoff swapfile
如果需要一直保持这个 swap ,可以sudo -s换到root
然后把它写入 /etc/fstab 文件。
swapfilepath swap swap defaults 0 0
即可。