0

問題があります。Linux マシンで C++ アプリをコンパイルしています。次に、実行可能ファイルを他のマシンに移動しましたが、エラーが発生しました:

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

どうすれば修正できますか?このエラーが発生した2番目のマシンで再コンパイルせずに(それは私のクライアントマシンです)

コンパイル コマンド:

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

ありがとう!

4

2 に答える 2

4

あなたのアプリはglibc-2.7ライブラリを使用しており、アプリは他のマシンでそれを見つけることができません. おそらく、このライブラリの古いバージョンがあります。次のオプションがあります。

  • ターゲット ホストでこのライブラリをアップグレードする
  • 古いライブラリ バージョンに対してアプリをリンクする
  • 静的リンクを使用する
  • ライブラリをアプリと一緒に出荷

1 つのライブラリだけに静的にリンクする方法:

gcc main.c mylibrary.a -o main

ほとんどのディストリビューションは、デフォルトでは静的ライブラリをインストールしないことに注意してください。

于 2013-01-27T20:22:41.930 に答える
1

次の 3 つの選択肢があります。

  1. コンパイラに与えられた元のマシンでコンパイルします-static。これにより、関連するライブラリがバイナリに含まれます[そして、「これは正しく機能しない可能性があります」という警告が表示される可能性があります]
  2. 新しいマシンでコードをコンパイルします。
  3. ターゲット マシンに正しいバージョンのライブラリをインストールします。

ほとんどの場合、オプション 1 を使用する傾向がありますが、さまざまな時点で 3 つすべてを使用しました。

于 2013-01-27T20:22:55.510 に答える