2GB以上のファイルを読み込むプログラムを書く場合、
64bit用プログラムとしてコンパイルすれば

size_t fread(void *buf, size_t size, size_t n, FILE *fp);

size_tが64bitになり、対応できるのですが、

int fseek(FILE *fp, long offset, int origin);

fseekの場合はlong型なので、32bitのままで、2GB以上の位置にシークできません。
どうすればよいのでしょうか?