私のプロジェクトを Mac OS-X に移植しようとしています。
C++0X を使用してプロジェクトを開発したとき、Xcode で提供されているもの (Xcode4 でさえ) よりも新しいバージョンの GCC が必要だったので、Snow Leopards Mac で GCC 4.6 をコンパイルしました。
私のプロジェクトは正常にコンパイルされ、コンパイルしたコンピューター (OS-X 10.6.7) でも起動しますが、MacBook (OS-X 10.5.8) に転送すると機能しません。
次のエラーが返されます。
dyld: 遅延シンボル バインドに失敗しました: シンボルが見つかりません: __ZNSo9_M_insertImEERSoT_ 参照元: /Users/zu/Desktop/OgreApp.app/Contents/MacOS/OgreApp
dyld: シンボルが見つかりません: __ZNSo9_M_insertImEERSoT_ 参照元: /Users/zu/Desktop/OgreApp.app/Contents/MacOS/OgreApp 予期される場所: /usr/lib/libstdc++.6.dylib
プログラムには GCC 4.6.0 の libstdc++.6.dylib が必要であることを理解しています。標準の libstdc++.6.dylib は、通常 OS-X システムに含まれています。
だから私は次のことを試しました:
-isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5を指定して、OS-X 10.5 との下位互換性を確保します。しかし、エラーは同じままです。
otool -Lを使用して libstdc++.6.dylib パスを確認し、install_name_tool -change /opt/local/lib/gcc46/libstdc++.6.dylib @executable_path/../Libraries/libstdc++.6.dylibを使用して共有ライブラリ パスを変更します。 OgreApp (Libraries フォルダーに gcc 4.6.0 libstdc++.6.dylib のコピーを含む)は、以前の質問の回答として提案されています。しかし、エラーは同じままです。
-static-libgcc - static-libstdc++を使用して libstdc++ と libgcc を静的にリンクします。しかし、それでも同じエラーが返されます。
私のプログラムは Ogre フレームワークを使用しているため、上記の操作を Ogre.framework に埋め込まれた Ogre 実行可能ファイルにも適用しましたが、何も変わりません。
非標準のlibstdc ++で作成されたアプリケーションを、古いバージョンがインストールされた別のMacコンピューターに展開する方法を誰かが説明できますか(プログラムがGCC 4.6を使用するため、Snow Leopardを実行しているコンピューターでも問題は同じだと思います) .0 libstdc++) ?