无法使用make |进行编译 致命错误设备上没有剩余空间

ban*_*nji 7 c linux compiler-errors makefile

情况:刚刚安装了linux,试着学习编码c.使用sudo apt-get install build-essential设置.在我的代码中打开nano类型

#include <stdio.h>

int main(int argc, char *argv[])
{
        puts("Hello World.\n");
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

打开另一个控制台选项卡,在make ex1中键入然后我的世界向下旋转到我最初的Linux发行版中尚未体验的最黑暗的深渊.

ragnar@ragnar:~/Documents/C$ make ex1
cc -Wall -g    ex1.c   -o ex1
ex1.c:7:1: fatal error: error closing /tmp/cc8d7Oap.s: No space left on device
 }
 ^
compilation terminated.
make: *** [ex1] Error 1


ragnar@ragnar:~/Documents/C$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb5       4.0G  3.8G     0 100% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            7.9G  8.0K  7.9G   1% /dev
tmpfs           1.6G  1.4M  1.6G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            7.9G  8.1M  7.9G   1% /run/shm
none            100M   28K  100M   1% /run/user
/dev/sdb2        96M   29M   68M  30% /boot/efi
/dev/sdb7        11G  248M  9.5G   3% /home
Run Code Online (Sandbox Code Playgroud)

所有的帮助表示赞赏.

alk*_*alk 12

包含根文件夹(/)的分区是100%已满.根文件夹当前还包含/tmp文件夹,在编译期间用于存储临时文件.作为根文件夹并且tmp文件夹已满,这会失败.

要解决此问题,请添加更多空间,或重新组织现有空间.

作为一种解决方法

mkdir ~/tmp
export TMPDIR=~/tmp
Run Code Online (Sandbox Code Playgroud)

并重试编译.


组织文件系统的灵活方法是使用单独的分区

/
/usr
/home
/var
/tmp
Run Code Online (Sandbox Code Playgroud)

一种懒惰的方法是链接/tmp//var/tmp.然而,这可能会导致问题,因为在清理方面,操作系统可能会处理与内容/var/tmp不同的内容/tmp.这就是/tmp/每次启动时都会被删除的内容/var/tmp.