mkbundle2を使用した後、宛先マシンはlibmono.0.dylibを見つけることができません

StackOverflow https://stackoverflow.com/questions/3413346

  •  26-09-2019
  •  | 
  •  

質問

私は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 の

の細かいマニュアル
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top