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