我有一个非常简单的.NET命令行应用程序,我想把它移植到OS上。
我可以用"mono app.exe“来运行它
但是,目标机器不会安装mono。因此,我想在应用程序中捆绑mono。
为此,我使用了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我可以在构建机器上执行此操作。但是,当我在没有mono的机器上执行时,它不会运行。
输出:
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我遗漏了什么?如何包含实际的mono运行时?
编辑:我还尝试添加了--static标志。然而,这给了我的应用程序另一个许可,我不确定我是否想要。然后我不再抱怨libmono,而是抱怨libgthread-2.0.0.dylib
发布于 2010-08-09 16:20:32
所以,问题是mkbundle链接到我的mac上的某个文件,我希望它会将它们捆绑在一起。通过使用以下命令查找链接的资源,可以清楚地看到这一点:
otool -L ./BundledApp(其中bundledApp是mkbundle2的输出)
为了修复它,我最终使用了来自monobjc项目的mkbundle nant-task:
http://www.monobjc.net/index.php?page=mkbundle-task
我认为它们几乎是我在这里找到的自动化版本:
http://code.google.com/p/cocoa-sharp-dev/wiki/RedistributableAppWithoutInstallingMono
但这给了我一些例外。
Monobjc nant任务工作起来没有任何问题,是目前为止最简单的解决方案。我仍然有多个文件,但这是可以的,至少它现在可以工作。
发布于 2010-08-05 23:57:11
尝试运行:
mkbundle -o包mkbundle program.exe --deps
(对捆绑包使用不同的名称,而不是与您的program.exe相同,并且不要将.exe扩展名设置为-o标志)
还有,你有没有试过macpack?
有关如何创建包的更多信息,请阅读here和the fine manual of mkbundle
https://stackoverflow.com/questions/3413346
复制相似问题