Xcode 4.6.2 を実行している Mac OS X 10.8.3 ホストで MacPorts GCC 4.7.2+universal を使用してバイナリを構築しています。
コンパイル フラグを使用して、Mac OS X 10.5 ~ 10.8 ホストのビルドをターゲットにしています。
-mmacosx-version-min=10.5
結果のバイナリmy_first_binary
には、次への 2 つのリンクがありますlibgcc_s.1.dylib
。
$ otool -L ../bin/my_first_binary
../bin/my_first_binary:
/opt/local/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.17.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1669.0.0)
/opt/local/lib/gcc47/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
バイナリは C++ で書かれており、MacPorts g++
4.7.2+universal コンパイラでコンパイルされており、一部の CI/O ルーチンを使用してファイルを開く際に問題があります。
コンパイル フラグを変更して、10.6 ~ 10.8 のホストを対象とする 2 つ目のバイナリを作成します。
-mmacosx-version-min=10.6
libgcc_s.1.dylib
この 2 番目のバイナリには、ライブラリへのリンクが 1 つだけあります。
$ otool -L ../bin/my_second_binary
../bin/my_second_binary:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
/opt/local/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.17.0)
/opt/local/lib/gcc47/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
この 2 番目のバイナリは正常に機能し、問題なくファイルを開きます。
私の質問は次のとおりです。
最小ビルド バージョンを 10.5 に設定すると、
/usr/lib
-variantlibgcc_s.1.dylib
がリンクされますか?これにより、2 つのバイナリの C ベースのコードで名前空間の衝突やその他の問題が発生する可能性はありますか?
これが問題である場合、最小 10.5 ターゲットへのビルドを続行しながら、これを停止またはトラブルシューティングするにはどうすればよいですか?