ここに問題があります。テストするC ++ライブラリ(「DataTsBroad」)とC ++テストアプリケーション(「DataTsBroadTest」)があります。
実際、Libとテストアプリケーションの両方がDebian Lennyでコンパイルされます。
Debian Lenny(顧客限定)でテストアプリケーションをコンパイルしたいのですが、最新のDebianバージョンで作業するためにSqueezeまたはWheezyでライブラリをコンパイルします。
だから私はSqueezeでLibを正常にコンパイルしましたが、後でLennyでこのLibを使ってテストアプリケーションをコンパイルしようとしたときに失敗しました!リンクエラーがあります:
CXX実行可能ファイルDataTsBroadTest /home/nis/pezierg/test/ProductMak/Export/DataTsBroad/L64/Release/libDataTsBroad64.soに接続します。 'std::ctype::_M_widen_init() const@GLIBCXX_3.4.11' の未定義参照
Collect2: ld は 1 つの終了状態を返します。
make[2]: *** [DataTsBroadTest] エラー 1
make[1]: *** [CMakeFiles/DataTsBroadTest.dir/all] エラー 2
make:*[全体]エラー2
問題の原因は明らかですオーストリムC++ Lib、私のLibでは、すべての用途に注釈を付けたのに効果がありました。
しかし、実際にこの問題をどのように解決できますか?
答え1
問題は、他のバージョンのGlibcを使用しているために発生するようです。ライブラリはSqueezeでコンパイルし、アプリケーション(Squeezeのライブラリを使用)はLennyでコンパイルしました。
出力を見てください。
ldd /home/nis/pezierg/test/ProductMak/Export/DataTsBroad/L64/Release/libDataTsBroad64.so