gcc 3.4.3 でコンパイルされたスタティック ライブラリがあります。gcc-4 でコンパイルされるコードでこれを使用したいと考えています。gcc-3 と gcc-4 バイナリには互換性がなく、ライブラリを再コンパイルする必要があることを漠然と読みましたが、これについて確認したいだけです。gcc-4 で使用できる gcc-3 ライブラリはありませんか?
1 に答える
組織内またはベンダーの他の誰かにライブラリを gcc 4 に更新してもらうことは、特に彼らがそれを放棄した場合、常にオプションとは限りません。
C++ の場合: リンクできると仮定すると、実行時にストリームを使用する C++ 標準ライブラリ テンプレート コードで爆発する可能性があります。これは、g++ 4 によって生成されたシンボルが g++ 3 によって生成された定義に対して解決されるためです。
リンク時に次の警告が表示される場合があります。
/usr/bin/ld: 警告: libstdc++.so.5 は (レガシーの静的ライブラリ) で必要とされ、libstdc++.so.6 と競合する可能性があります
以下に例を示します: 基本クラスのデストラクタ ~basic_stringbuf() (実際にはテンプレート) は、g++ 3 でコンパイルされたモジュールで定義できますが、libstdc++so.6 のデストラクタ ~basic_ostringstream() によって誤って呼び出されます。これは、g++ 4 コンパイル済みモジュールによって呼び出されます。カブーム。
compat-libstdc++-33 を試しましたが、うまくいきませんでした。
そうは言っても、私は今でも 32 ビットの gcc 3 時代の C ライブラリを gcc 4.1.2 C++ プログラムにリンクしています。