我需要将 LFS 添加到使用fseek()
. gcc 和 glibc 分别是 3.2.3 和 2.5 版本。
我做了以下改动:
- 添加
CFLAGS += -D_FILE_OFFSET_BITS=64
到makefile。 - 我将调用替换为调用
fseek()
(fseeko()
我还需要 MSVC6 支持,但一次一步)。 - 我已将第二个参数的类型更改为
off_t
.sizeof()
在变量上返回 8。
这是一个很好的示例main()
,我可以通过我们的 DLP 及其输出:
fd = fopen("large_file", "rb");
off_t offset = 1ULL << 32;
rc = fseeko(fd, offset, SEEK_SET);
rc = -1 sizeof(offset)=8 errno=22 offset=2147483648