首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用mkbundle2后,目标机器找不到libmon.0.dylib

使用mkbundle2后,目标机器找不到libmon.0.dylib
EN

Stack Overflow用户
提问于 2010-08-05 17:23:58
回答 2查看 706关注 0票数 1

我有一个非常简单的.NET命令行应用程序,我想把它移植到OS上。

我可以用"mono app.exe“来运行它

但是,目标机器不会安装mono。因此,我想在应用程序中捆绑mono。

为此,我使用了mkbundle2:

代码语言:javascript
运行
复制
mkbundle2 -o bundledapp.exe app.exe --deps

这是没有错误的工作,输出:

代码语言:javascript
运行
复制
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的机器上执行时,它不会运行。

输出:

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-09 16:20:32

所以,问题是mkbundle链接到我的mac上的某个文件,我希望它会将它们捆绑在一起。通过使用以下命令查找链接的资源,可以清楚地看到这一点:

代码语言:javascript
运行
复制
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任务工作起来没有任何问题,是目前为止最简单的解决方案。我仍然有多个文件,但这是可以的,至少它现在可以工作。

票数 1
EN

Stack Overflow用户

发布于 2010-08-05 23:57:11

尝试运行:

mkbundle -o包mkbundle program.exe --deps

(对捆绑包使用不同的名称,而不是与您的program.exe相同,并且不要将.exe扩展名设置为-o标志)

还有,你有没有试过macpack

有关如何创建包的更多信息,请阅读herethe fine manual of mkbundle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3413346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档