c - 无法用 make 编译 | fatal error 设备上没有剩余空间

标签 c linux compiler-errors makefile

情况:刚刚安装了linux,正在尝试学习编码c。使用 sudo apt-get install build-essential 进行设置。在我的代码中打开 nano type

#include <stdio.h>

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

打开另一个控制台选项卡,输入 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

感谢所有帮助。

最佳答案

包含根文件夹 (/) 的分区已 100% 满。根文件夹目前还包含/tmp文件夹,用于编译时存放临时文件。由于根文件夹和 tmp 文件夹已满,因此失败。

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

作为解决方法

mkdir ~/tmp
export TMPDIR=~/tmp

并重试编译。


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

/
/usr
/home
/var
/tmp

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

关于c - 无法用 make 编译 | fatal error 设备上没有剩余空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31493663/

相关文章:

无法创建整数数组来保存字符

linux - 在这种情况下,我应该在单独的线程中读取文件吗?

Haskell:解析错误:需要模块头、导入声明或顶级声明

c - ANSI C 编译错误 : expected expression before ‘,’ token

java - FileNotFoundException未报告

c - 使用 .d-dependency-file 时 makefile 先决条件重建失败

python - 如何使用 SWIG 生成跨平台界面?

c - 字符串内存泄漏?

python - 阅读命令的反馈?

android - ffmpeg 构建错误看起来 tmp 文件创建失败?