-
리눅스에서는 open() 시스템콜의 flag 파라미터에 O_LARGEFILE 옵션을 같이 주면 2G 이상의 파일도 제어할 수 있습니다.
그리고, _LARGEFILE64_SOURCE 와 _FILE_OFFSET_BITS=64 는 약간의 차이가 있는데..
_LARGEFILE64_SOURCE 는 off_t를 32비트로 그대로 사용하는 대신, off64_t 라는 64비트용 변수 타입을 새롭게 정의해서 lseek64()와 같은 함수를 사용할 수 있게 해주고요.
_FILE_OFFSET_BITS=64 는 off_t 변수 타입 자체를 32비트에서 64비트로 확장하게 됩니다.
DFLAGS += -D_LARGEFILE64_SOURCE
DFLAGS += -D_FILE_OFFSET_BITS=64
둘 다를 쓰면 off_t 는 64비트가 되고, off64_t 변수도사용할 수 있을 것으로 추정.
#define _LARGEFILE64_SOURCE
open64()
creat64(x,(int)(y))
off64_t lseek64(int fd, off64_t offset, int whence);
void *mmap2(void *start, size_t length, int prot,
int flags, int fd, off_t pgoffset);
pgoffset 이 4kB units (instead of bytes)