mkbundle2を使用した後、宛先マシンはlibmono.0.dylibを見つけることができません
質問
私はOS Xの
に移植したいという非常に単純な.NETのコマンドラインアプリケーションを持っています
私は「モノapp.exeの」
でそれを実行することができます
しかし、先のマシンはモノがインストールされていません。
だから、私は、アプリ内のモノをバンドルしたかっます。
は、これを行うためには、私がmkbundle2を使用します:
mkbundle2 -o bundledapp.exe app.exe --deps
このエラーなしで動作し、出力ます:
OS is: Darwin
Sources: 1 Auto-dependencies: True
embedding: /Users/kclement/Projects/app/build/app.exe
embedding: /Library/Frameworks/Mono.framework/Versions/2.6.1/lib/mono/2.0/mscorlib.dll
embedding: /Library/Frameworks/Mono.framework/Versions/2.6.1/lib/mono/gac/System/2.0.0.0__b77a5c561934e089/System.dll
embedding: /Library/Frameworks/Mono.framework/Versions/2.6.1/lib/mono/gac/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
embedding: /Library/Frameworks/Mono.framework/Versions/2.6.1/lib/mono/gac/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
embedding: /Library/Frameworks/Mono.framework/Versions/2.6.1/lib/mono/gac/System.Security/2.0.0.0__b03f5f7f11d50a3a/System.Security.dll
embedding: /Library/Frameworks/Mono.framework/Versions/2.6.1/lib/mono/gac/Mono.Security/2.0.0.0__0738eb9f132ed756/Mono.Security.dll
Compiling:
as -arch i386 -o temp.o temp.s
cc -g -o bundledapp.exe -Wall temp.c `pkg-config --cflags --libs mono` temp.o
Done
私は、ビルドマシン上でこれを実行することができます。私はしかし、モノせずにマシン上で実行すると、それが実行されません。
出力:
dyld: Library not loaded: /Library/Frameworks/Mono.framework/Versions/2.6.1/lib/libmono.0.dylib
Referenced from: /Users/kristof/./bundledapp.exe
Reason: image not found
Trace/BPT trap
私は何をしないのですか?どのように私は含まれない実際のモノのランタイム?
編集: 私はまた、--staticフラグを追加しようとしました。 それは私が必ず私が望んでいないよこれは、しかし、私のアプリ別のライセンスを与えます。 私は、もはやその他のlibmono文句ありませんが、libgthread-2.0.0.dylibについて
解決
だから、問題はいくつかのファイルへのリンクmkbundleである私はそれらをバンドルすることを期待し、私のMac、上に存在しています。あなたは明らかにコマンドを使用してリンクされたリソースを検索することでそれを見ることができます:
otool -L ./BundledApp
(bundledAppがmkbundle2の出力である)
それを修正するために、私はmonobjcプロジェクトからmkbundleナント・タスクを使用して終了:
http://www.monobjc.net/index.php?page=mkbundle-タスクの
私は、彼らはほとんど私がここで見つけたものの自動化されたバージョンだと思います。
http://code.google.com/p/cocoa-sharp- DEV /ウィキ/ RedistributableAppWithoutInstallingMono の
しかし、それは私に例外を与えます。
MonobjcのNAntのタスクは問題なく動作し、これまでで最も簡単なソリューションです。私はまだ複数のファイルを持っていますが、それはそれは動作するようになりまし少なくとも、大丈夫です。
他のヒント
を実行してみます:
mkbundle -o bundledappname PROGRAM.EXE --deps
(バンドルに別の名前ではなく、あなたのPROGRAM.EXEと同じを使用し、-oフラグに.exe拡張子を入れないでください)
また、あなたは macpack してみましたか?
バンドル読みここと href = "http://manpages.ubuntu.com/manpages/maverick/man1/mkbundle.1.html" のrel = "nofollowをnoreferrer"> mkbundle のの細かいマニュアル