今天使用gcc编译程序时,出现了如下错误:
gcc: 内部错误:文件大小超出限制
[root@hdfs05 COpFile]# gcc readxml.c
gcc: Internal error: File size limit exceeded (program as)
Please submit a full bug report.
See <URL:http://bugzilla.redhat.com/bugzilla> for instructions.
[root@hdfs05 COpFile]# gcc readxml.c
gcc: 内部错误:文件大小超出限制 (程序 cc1)
请提交一份完整的错误报告。
具体步骤请参见 <URL:http://bugzilla.redhat.com/bugzilla>。
解决办法:
这是由于我在shell中误操作了命令“ulimit 0”所导致的,
ulimit命令是用来限制用户的某些系统资源的,包括可以打开的文件数量、可
以使用的CPU时间、可以使用的内存总量、当前shell可以建立的最大文件容量等等
。命令具体使用请查阅相关资料,这里只介绍与文件大小限制相关的知识。
命令使用方式: ulimit [-SHacdfilmnpqstuvx] [配额]
ulimit默认的选项是 -f,即限制当前shell可以建立文件的最大容量,其单位
是KB,注意是当前shell,即若在当前shell中使用了 ulimit -f 命令,其作用范围
只是当前shell,不会作用于其他shell。
例如 :
ulimit 1024 = ulimit -f 1024 表示可以建立的最大文件容量是1024KB=1M。
使用 ulimit -f 或者ulimit可以查看限制的容量大小。如果不想限制创建文件的大
小,可以将配额赋值为unlimited,例如: ulimit unlimited 或 ulimit -f
unlimited。
由于我使用了命令 ulimit 0,最大文件是0,所以gcc编译会出现错误,
解决办法是:
在当前shell中运行命令 ulimit unlimited ;
或者
退出该shell,重新启动一个shell
此外,介绍一下 ulimit -c [配额] 命令,它是限制可以建立的最大核心文件(core files)的容量,在使用gdb调式程序时可能要用到它。
例如:
xiaosuo@gentux test $ ulimit -c
0
xiaosuo@gentux test $ ulimit -c 1000
xiaosuo@gentux test $ ulimit -c
1000
xiaosuo@gentux test $ ./a.out
段错误 (core dumped)
编译出现错误,产生了core文件,
用gdb调试一下core文件:
xiaosuo@gentux test $ gdb ./a.out core