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>
#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/[email protected]/blog/static/158220932013921758707/