C言語で、2GB以上の巨大ファイルを開く方法(Linux編)

2010年2月14日

通常のglibcでは、open(), fopen()は2GB以内のファイルオープンにしか対応していません。 

これは、現在のファイルディスクリプタの制約でしょう。


しかし、コンパイルオプションを追加することで、同じAPIでも2GB超のファイルを オープンすることができるようになります。

1
2
-D_LARGEFILE64_SOURCE 
-D_FILE_OFFSET_BITS=64

上記2つのオプションをgccのコンパイルオプションとして渡してあげましょう。


これで、ファイルオフセット(off_t or FILE)が64bit化され、現在のext3の1ファイルサイズ 上限である4TBまで扱えるようになります。