off_t が表すことができるよりも多くのバイトをシークしようとすると、EOVERFLOW エラーが発生することに気付きました。off_t でより大きな数を求めるにはどうすればよいですか?
質問する
1219 次
2 に答える
6
大きなファイルのサポートを有効にします。
LFS を使用するための簡単な説明では、次のいずれかを選択できます。
- プログラムを " " でコンパイルします
gcc -D_FILE_OFFSET_BITS=64
。これにより、すべてのファイル アクセス呼び出しで 64 ビット バリアントが使用されます。off_t
となるなど、いくつかのタイプも変化しoff64_t
ます。したがって、常に正しい型を使用し、int
代わりに eg を使用しないことが重要ですoff_t
。他のプラットフォームとの移植性のために、Linux プラットフォームgetconf LFS_CFLAGS
では返さ-D_FILE_OFFSET_BITS=64
れるが、Solaris などでは別のものを返す可能性がある を使用する必要があります。リンクについては、 経由で報告されるリンク フラグを使用する必要がありますgetconf LFS_LDFLAGS
。Linux システムでは、特別なリンク フラグは必要ありません。- とを定義
_LARGEFILE_SOURCE
し_LARGEFILE64_SOURCE
ます。これらの定義を使用すると、open64 などの LFS 関数を直接使用できます。- 大きなファイルを操作するには、
O_LARGEFILE
with フラグを使用します。open
于 2012-07-01T23:56:22.880 に答える
0
于 2012-07-02T00:03:22.070 に答える