我正在尝试使用Ubuntu 10中的简单gcc命令制作一些C代码,但由于某种原因,我一直收到错误:
Cannot create temporary file in /tmp/: No space left on device
但问题是,磁盘上有足够的空间。这是df -h的输出:
Filesystem Size Used Avail Use% Mounted on
/ 3.7G 2.4G 1.1G 70% /
devtmpfs 312M 112K 312M 1% /dev
none 312M 24K 312M 1% /dev/shm
none 312M 80K 312M 1% /var/run
none 312M 0 312M 0% /var/lock
none 312M 0 312M 0% /lib/init/rw
和df -i,如果你想知道inode:
Filesystem Inodes IUsed IFree IUse% Mounted on
/ 240960 195198 45762 82% /
devtmpfs 79775 609 79166 1% /dev
none 79798 3 79795 1% /dev/shm
none 79798 41 79757 1% /var/run
none 79798 2 79796 1% /var/lock
none 79798 1 79797 1% /lib/init/rw
我也可以成功touch /tmp/test
,所以我知道驱动器上有空间。关于为什么gcc决定突然之间的任何想法? (它工作得更早)事先谢谢。
答案 0 :(得分:8)
我认为您的/ tmp目录实际上是作为devtmpfs
挂载的,如果我没记错的话,它实际上就是您计算机的RAM。
您可以随时重新启动并查看是否有帮助,增加虚拟内存分区,或者您可以关闭正在运行的程序以查看是否有帮助。另外,您可以从/ tmp中删除一些不必要的文件,因为它们至少在会话期间是易变的。
答案 1 :(得分:3)
中间文件对于/tmp
来说太大了,所以可能使用另一个临时目录(TMPDIR=/var/tmp g++ ...
)会有所帮助。