4

すべての 2.X Glibc バージョンで動作するようにアプリケーションをコンパイルするにはどうすればよいですか? 今、私は 2.7 GLibc バージョンのマシンでコンパイルしますが、glibc バージョンが 2.5 のアプリを起動すると、エラーが発生します:

./server: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by ./server)

すべての 2.X バージョンで動作するアプリをコンパイルするにはどうすればよいですか?

コンパイル コマンド:

g++  -o newserver  test.cpp ... -lboost_system -lboost_thread -std=c++0x

ありがとう!

4

2 に答える 2

3

最も簡単な方法は、サポートしようとしているものの中で最も古い glibc を搭載したマシンでビルドすることです。Linux マシンでは、完全なインストールを行って、マシンの ed 環境に転送することもできます。この方法では、職場をダウングレードするchroot必要はありません。

他の回答でより便利な解決策を見つけていただければ幸いです(実際にもっと便利になる場合:GCCの再構築を含むものはすべて資格がありません、IMHO)。

于 2013-01-28T19:07:48.240 に答える
0

私は専門家ではありませんが、アプリケーションを glibc 2.5 で実行する必要がある場合は、2.5 で利用可能な機能に限定する必要があり、それ以降は何もしないことに気づきました。つまり、2.6 以降で導入された機能の使用を制限します。それは役に立ちますか?

glibc 2.7 の機能が本当に必要な場合は、ターゲット システムの明示的な要件にします。実行中のシステムの glibc のバージョンを確認するコードを記述できます。使用可能なバージョンが必要なバージョンよりも低い場合は、包括的なメッセージを出力/ログに記録して、正常に終了します。

ただし、ネット全体にキャストしたい場合、つまり、アプリケーションを幅広いシステムで実行する予定がある場合は、(パラグラフ 1 でスケッチしたように) 使用法を下位バージョンに頼ると、より効果的であることが判明する可能性があります。

于 2013-01-28T19:08:45.137 に答える