DebianでUbuntuとしてバイナリ実行可能ファイルはありますか?

DebianでUbuntuとしてバイナリ実行可能ファイルはありますか?

私はgcc 4.9を使ってDebianでいくつかの大きなC ++プログラムをコンパイルしました。実行可能なバイナリコードがUbuntuで互換性があり安全であるかどうかを知りたいです。それともUbuntuでプログラムを再コンパイルする必要がありますか?

ベストアンサー1

問題は現在、すべてのLinuxで広く使用されているコアライブラリglibcにあります。これには、libc共有ライブラリで各標準関数の複数のバージョンを提供する機能を追加し、glibcに付属のライブラリをサポートする「シンボルバージョン管理」という「機能」が含まれています。

たとえば、生成されたバイナリは「GLIBC_2.15」シンボルバージョンによって異なりますが、ターゲットシステムは最大「GLIBC_2.14」を提供します。これは致命的なエラーメッセージを表示し、それがすべてです。

いくつかのglibcバージョンは古いカーネルやハードウェアでも実行を拒否しますが、このような場合はまれです。

glibcの場合、静的コンパイルもオプションではありません(考えた場合)。一部のglibc部分は、静的プログラムでも動的ライブラリを必要とする可能性があるためです(コンパイルおよびリンク中にスペースを取ると警告メッセージが表示されます)。

複数のシステムでバイナリを実行する必要がある場合は、別のlibcを使用する必要があります。バイナリを別のシステムで実行するには、そのシステムで再構築するのが最善です。

場合によっては(glibcには該当しません)、ターゲットが非常に遅い場合は、コンパイルされたソースツリーをコピーし、すべてのオブジェクト(* .o)ファイルをタッチしてバイナリを削除できます。その後、実行するとmake再接続されます。

さらに、多くの(すべてではありません!)サードパーティのライブラリでシンボリックバージョン管理の要件を適用できます。これはそのライブラリにも適用されます。

おすすめ記事