Linux 编译时内存不足
1、编译内核出现问题:No space left on device
AS .tmp_kallsyms1.o
.tmp_kallsyms1.S:2: fatal error: when writing output to /tmp/ccf0eS0W.s: No space left on device
compilation terminated.
make: *** [.tmp_kallsyms1.o] Error 1
arm-none-Linux-gnueabi-objcopy: 'vmlinux': No such file
cp: cannot stat `linux.bin': No such file or directory
gzip: linux.bin: No such file or directory
./mkimage: Can't open kernel.bin: No such file or directory
root@debian:/mnt/kernelsrc/linux-3.3#
主要是系统 /tmp/空间不足引起的,tmp文件夹空间不足了,不能满足编译的需求,编译的中间文件不能写入。
解决办法 mkdir 文件夹——你可以使用的文件夹 比如说 mkdir /mnt/kernelsrc/tmp
然后只要export TMPDIR=/mnt/kernelsrc/tmp
这样就不会出现 tmp文件夹不够用的情况。
2、编译程序时,如果出现类似virtual memory exhausted: Cannot allocate memory的错误时,可以用下面的方法解决。
创建swap挂载点
# mkdir /opt/images/
# rm -rf /opt/images/swap
设置挂载swap的大小,64M*32=2GB
# dd if=/dev/zero of=/opt/images/swap bs=64M count=32
# mkswap /opt/images/swap
开启swap
# swapon /opt/images/swap
这个时候,可以执行之前内存不足时的命令了,正常情况下,执行时间会比较长,但是能过去
最后,可以考虑关闭swap并删除挂载文件
# swapoff swap
# rm -f /opt/images/swap