多くのライブラリがインストールされているLinuxボックス(Boostなど)でC ++プログラムをコンパイルし、その実行可能ファイルをそれらのライブラリがない新しいLinuxボックスにコピーした場合でも、実行可能ファイルは正しく実行されますか?
質問する
1383 次
2 に答える
4
これは、特定のライブラリに大きく依存します。3 種類のライブラリがあります。
- ヘッダーのみのライブラリ- これらの依存関係はコンパイル時に解決されます。
- 静的ライブラリ- これらの依存関係はリンク時に解決されます。
- 共有 (動的) ライブラリ- これらの依存関係は実行時に解決されます。
ほとんどの Boost ライブラリはヘッダーのみです。ライブラリ バイナリを個別にコンパイルしたり、リンク時に特別な処理を行ったりする必要はありません。他のライブラリはstaticです。つまり、それらはリンクのためにビルド時にのみ必要です。ターゲット マシンで使用できる必要がある唯一のライブラリは、動的 (共有) ライブラリです。動的ライブラリの依存関係がない場合は、実行可能ファイルをコピーして適切な権限を設定すると問題なく動作します。
于 2013-02-04T04:10:30.637 に答える
0
ライブラリは、静的にリンクする (実行可能ファイルにコピーする場合) か、動的にリンクする (実行時にシステムによって独自のコピーから読み込まれる) ことができます。
ほとんどすべてのライブラリは動的になります。これにより、コードの 1 つのコピーのみを多くのプログラムで使用できるようになり、バグを修正するために 1 つのファイルのみを更新できるようになります。
于 2013-02-04T04:10:42.687 に答える