解决Linux中在创建大于4g文件时遇到的File Size Limit Exceeded问题

本文介绍了在Linux系统中遇到文件大小超过4GB限制的问题,并提供了解决方案。通过在GCC编译时添加特定标志-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64,可以调整offset_t大小,使得系统支持创建更大的文件。同时,文中还提供了一个用于测试的C语言程序write_bigfile.c,展示了如何在代码中应用这些编译标志。
摘要由CSDN通过智能技术生成

今天在解决在PMC开发板上挂着NTFS磁盘分区,创建大于4G文件时老在文件到达2G时出现以下错误:

File Size Limit Exceeded

于是在我的Fedora 9虚拟机上上用gcc编译程序进行测试,还是遇到同样的问题。通过命令”ulimit -f“发现是没有限制的,当山感觉到可能是我的程序出了问题。于是在网上google和百度了一番。

终于发现了问题所在:

我们通常的linux系统,offset_t的大小为32,通过程序创建的话,系统不支持大于2G的文件。

 

解决方法:

 

编译时加上-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 即可。目的是用于调整offset_t的大小,由于的32位INT变成64位。

 

如下所示:

[root@localhost programs]# gcc -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -o write_bigfile write_bigfile.c

 

在这过程中了解学习了ulimit命令的用途:于shell启动进程所占用的资源。

同样,如果要跑到嵌入式平台,只需用进行交叉编译即可。  

 

附上write_bigfile.c的代码:

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当在导入Java文件遇到"GC overhead limit exceeded"错误,可以尝试以下解决方案: 1. 增加堆内存大小:通过增加Java堆内存大小来解决问题。可以使用启动参数"-Xmx"来设置堆内存大小,例如"-Xmx2g"表示将堆内存大小设置为2GB。 2. 选择合适的GC算法:不同的GC算法对内存管理的方式不同,选择合适的GC算法可以减少"GC overhead limit exceeded"错误的发生。可以使用启动参数"-XX:+UseParallelGC"来选择并行GC算法。 3. 检查代码的内存泄漏:该错误通常是由于代码存在内存泄漏导致的。可以通过检查代码,确保及释放不再使用的对象,避免内存泄漏的发生。 4. 调整应用程序的逻辑:如果应用程序的逻辑导致频繁的垃圾回收操作,也可能引发"GC overhead limit exceeded"错误。可以考虑优化应用程序的逻辑,减少不必要的垃圾回收操作。 需要注意的是,以上解决方案并不是适用于所有情况,具体的解决方法可能因应用程序的具体情况而异。在解决问题,可以根据具体的错误信息和应用程序的需求进行调整和优化。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [GC overhead limit exceeded问题](https://blog.csdn.net/qq_36908872/article/details/102685311)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [java.lang.OutOfMemoryError: GC overhead limit exceeded问题分析及解决](https://blog.csdn.net/whc888666/article/details/128496598)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值