2011-06-22 7 views
4

Mac OS-Xで私のプロジェクトを移植しようとしています。GCC 4.6を使用してコンパイルされたOSXアプリケーションをデプロイする

私は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を /usr/lib/libstdc++.6.dylib

dyldの::シンボルが見つかりません:から参照 __ZNSo9_M_insertImEERSoT_: /Users/zu/Desktop/OgreApp.app/Contents/MacOS/OgreAppに期待に期待:。 /usr/lib/libstdc++.6.dylib私は、このファイルはC++ 0xの機能が含まれているように、プログラムがのlibstdC++ GCC 4.6.0の6.dylibを必要としていることを理解し

(私の現在のテストでは、通常はOS-Xシステムに標準のlibstdC++。6.dylibの代わりにC++ 0x機能を使用していません)。

だから、私は次のことを試みた:

  • -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosxバージョン分を指定する= 10.5 OS-との下位互換性を確保するためにX 10.5。しかし、エラーは同じままです。

  • はのlibstdC++コマンドotool -Lを使用してinstall_name_tool -change /opt/local/lib/gcc46/libstdc++.6.dylib @ executable_path /を使用して共有ライブラリのパスを変更する。6.dylibパスを確認するには.. /Libraries/libstdc++.6.dylib OgreApp(libフォルダのgcc 4.6.0 libstdC++。6.dylibのコピーを使用)は、answer of my previous questionとして示唆されています。しかし、エラーは同じままです。

  • libstdC++とlibgccを静的にリンクするには、-static-libgcc-static-libstdC++を使用します。しかし、それは同じエラーを返します。私のプログラムは、鬼のフレームワークを使用するよう

、私はあまりにもOgre.frameworkに埋め込まれた鬼の実行可能ファイルに上記の操作を適用するが、それは何も変わりません。

私は、標準でないlibstdC++で作成されたアプリケーションを、別のMacコンピュータに以前のバージョンでインストールする方法を誰に教えてもらえませんか?(問題は、Snow Leopardをプログラムとして実行しているコンピュータと同じですGCC 4.6.0 libstdC++を使いますか?

+0

これは、あなたが1週間前に質問した* YOU * Valkeaの質問と全く同じです。 –

+0

[OS-X Leopard(10.5.8)を使用して別のMacでOS-X Snow Leopard(10.6.7)でコンパイルしたアプリケーションを実行できません。 libstdC++ .dylibエラーが返されました。](http://stackoverflow.com/questions/6365772/unable-to-run-an-application-compiled-on-os-x-snow-leopard-10-6-7- on-another-ma) –

+0

これは重複していませんが、これは私がこの質問で示したように他の質問の結果です。私は他のスレッドで提案された答えを中心に研究を行いました。ここで私はこの問題の新しい視点をここに公開します。 – Valkea

答えて

0

Mac OS X 10.5には、GCC標準ライブラリの互換性のあるコピーは含まれていません。あなたのコードをLeopard上で実行したい場合は、GCCの古いバージョンでコンパイルするためにそれを修正するか、またはあなたがする必要があります...まあ、本当にあなたの唯一の選択肢です。

+2

gcc 4.6.0 libstdC++。6.dylibをバンドルに含める方法と、実行可能ファイルにそれを使用させる方法はありませんので、残りのアプリケーションと共有できますか? – Valkea

+0

とにかく古い標準ライブラリとリンクしているので、私はそれをお勧めしません。 –

+0

@Valkea、それをリンクしよう、多分それは動作する、または解決するのが簡単な他のエラーを与える – lurscher

関連する問題