2

私は巨大な .so ファイルを持つアプリケーションを構築しています - サイズが 2GB をはるかに超えています (剥がされています)。共有オブジェクト ファイルのサイズに制限はありますか? strace は、ファイルが大きすぎるために拒否されたことを示しているためです。

現在、私のシステムは 32 ビット システムですが、64 ビット Linux システム用にビルドすると、これがどの程度変化するのかも気になります。

4

2 に答える 2

1

システムのメモリに依存します*.soリンクは、実行可能ファイルまたはシステム自体に直接ロードされます。メモリが少ない場合、またはOSが大量のメモリを割り当てている場合はロードできず、64ビットシステム用にビルドすると2 GB以上拡張されますこれは、64 ビットのフラグと命令がいくつか追加されたためです。

于 2012-05-31T17:04:22.720 に答える
1

共有ライブラリは完全にメモリに読み込まれるため、リソースをいくつかの外部ファイルに移動することを強くお勧めします。IMHO、2GBは共有ライブラリにはまったく受け入れられず、メモリの少ないシステムでは問題が発生します。

アップデート:

共有ライブラリ全体をメモリにロードするという私の最初の文は無視してください。OPがコメントしたように、共有ライブラリは実際にmmapされ、シンボルページはオンデマンドでロードされます。

于 2012-05-31T17:12:03.537 に答える