5

多くのライブラリがインストールされているLinuxボックス(Boostなど)でC ++プログラムをコンパイルし、その実行可能ファイルをそれらのライブラリがない新しいLinuxボックスにコピーした場合でも、実行可能ファイルは正しく実行されますか?

4

2 に答える 2

4

これは、特定のライブラリに大きく依存します。3 種類のライブラリがあります。

  • ヘッダーのみのライブラリ- これらの依存関係はコンパイル時に解決されます。
  • 静的ライブラリ- これらの依存関係はリンク時に解決されます。
  • 共有 (動的) ライブラリ- これらの依存関係は実行時に解決されます。

ほとんどの Boost ライブラリはヘッダーのみです。ライブラリ バイナリを個別にコンパイルしたり、リンク時に特別な処理を行ったりする必要はありません。他のライブラリはstaticです。つまり、それらはリンクのためにビルド時にのみ必要です。ターゲット マシンで使用できる必要がある唯一のライブラリは、動的 (共有) ライブラリです。動的ライブラリの依存関係がない場合は、実行可能ファイルをコピーして適切な権限を設定すると問題なく動作します。

于 2013-02-04T04:10:30.637 に答える
0

ライブラリは、静的にリンクする (実行可能ファイルにコピーする場合) か、動的にリンクする (実行時にシステムによって独自のコピーから読み込まれる) ことができます。

ほとんどすべてのライブラリは動的になります。これにより、コードの 1 つのコピーのみを多くのプログラムで使用できるようになり、バグを修正するために 1 つのファイルのみを更新できるようになります。

于 2013-02-04T04:10:42.687 に答える