Linux 编译时内存不足

时间:2023-01-20 18:15:19

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