gcc 4.7.1 でスタティック ライブラリ (mylib.a) をコンパイルする予定です。C++11 の利点を生かしたいので、-std=c++11 を使用します。この lib をコンパイルするプラットフォームは、glibc-2.8 を使用する x86_64 SLES 11 です。
次に、レガシー プラットフォーム上のこのスタティック ライブラリをレガシー コードにリンクしたいので、レガシー コードのリンクとコンパイルには gcc 4.1.2 を使用する必要があります。したがって、私のライブラリ ヘッダーでは、C++11 固有のコードは使用しません。また、gcc.4.7.1 から libstdc++.a をリンクします。mylib.a、libstdc++.a(gcc4.7.1)、およびレガシー オブジェクト ファイルをリンクするプラットフォームは、glibc-2.4 を使用した x86_64 SLES 10 です。
mylib.a のいくつかのダミー C++11 コード (std::async()) でこの混乱をすべて試してみましたが、うまくいきました。これは、ELF 要件のおかげでのみ可能だと思います。私の考えは正しいですか、それとも ELF は関係ありませんか? mylib.a に非常に複雑なロジックが含まれている場合、どのようなエラーが予想されますか?