linux fopen打开大于4G的文件 失败

用fopen函数打开一个大于4G的文件失败,解决方法:

 

在makefile编译选项里加上如下选项:

-D_GNU_SOURCE -D_XOPEN_SOURCE=600 -D_LARGEFILE_SOURCE-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64

 

当然还有其他的方法(出自某哥的博客),比如:

 

正常32位linux系统打开大于2G的文件会报错,解决办法:
一、定义宏 
//   定义宏,使得可以处理大文件(>4GB)   (凡是用到得地方,都要引入这个宏定义。所以需要单独写在一个.h文件里)
  #undef   _FILE_OFFSET_BITS   
  #define   _FILE_OFFSET_BITS   64   
  #include   <unistd.h>   
  #include   <dirent.h>
 
二、在makefile编译选项里加上-D_FILE_OFFSET_BITS=64 -D_LARGE_FILE
 (Qt可以在pro文件里修改DEFINES +=  _FILE_OFFSET_BITS=64 _LARGE_FILE,自动会在makefile中生成如上格式的参数)
 
三、使用fopen64函数
 
四、在使用fopen等函数的加上一个参数:
对与open,可以使用O_LARGEFILE参数,
即: fd = open("./bill_test",O_LARGEFILE|O_APPEND|O_RDWR,0666); 
然后就没用问题了,但是fopen没有这个参数,只能按照方法一来解决。

以上方法出自博客:http://blog.163.com/qimo601@126/blog/static/158220932013921758707/、

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值