我注意到当我尝试寻找比 off_t 更多的字节时,我得到一个 EOVERFLOW 错误。我怎样才能在 off_t 中寻找比更大的数字更多的东西?
问问题
1219 次
2 回答
6
启用大文件支持。
简而言之,使用 LFS,您可以选择以下任一项:
- 用“”编译你的程序
gcc -D_FILE_OFFSET_BITS=64
。这会强制所有文件访问调用使用 64 位变体。几种类型也发生变化,例如off_t
变为off64_t
。因此,始终使用正确的类型并且不要使用 egint
代替off_t
. 为了与其他平台的可移植性,您应该使用getconf LFS_CFLAGS
它将-D_FILE_OFFSET_BITS=64
在 Linux 平台上返回但可能在例如 Solaris 上返回其他东西。对于链接,您应该使用通过报告的链接标志getconf LFS_LDFLAGS
。在 Linux 系统上,您不需要特殊的链接标志。- 定义
_LARGEFILE_SOURCE
和_LARGEFILE64_SOURCE
。通过这些定义,您可以直接使用像 open64 这样的 LFS 函数。- 使用
O_LARGEFILE
标志 withopen
对大文件进行操作。
于 2012-07-01T23:56:22.880 回答
0
于 2012-07-02T00:03:22.070 回答