2010-07-14 66 views
2

我认为mkbundle2的目的是允许没有安装mono的机器运行单声道应用程序。但它似乎并没有打包libmono.so。我不确定是否应该这样做,但是目标机器抱怨说当我运行该软件包时它找不到libmono.so.0。它为什么要查找该文件?如果需要的话,为什么它只能在捆绑中找到任何地方?如果它应该在捆绑中,为什么没有mkbundle2呢?我正在使用“--deps”选项来包含所有依赖关系。我错过了什么吗?用mkbundle2打包后,目标机器抱怨libmono.so。为什么?

添加--static选项后,我得到的目标计算机上这样的结果:

未处理的异常:System.TypeInitializationException:一个例外是由类型初始化为System.Windows.Forms.XplatUI抛出 - System.Windows.Forms.XplatUI..cctor()[0x00000] in:0

(System.Windows.Forms.XplatUI:uname(intptr) )

使用export MONO_LOG_LEVEL = debug显示更多信息:

Mono-INFO:DllImport试图加载:'libc'。 Mono-INFO:DllImport加载位置:'libc.so'。 Mono-INFO:DllImport错误加载库:'/usr/lib64/libc.so:invalid ELF header'。 Mono-INFO:DllImport加载库:'./libc.so'。 Mono-INFO:DllImport错误加载库'./libc.so:无法打开共享对象文件:没有这样的文件或目录'。 Mono-INFO:DllImport加载:'libc'。 Mono-INFO:DllImport错误加载库'libc:无法打开共享对象文件:没有这样的文件或目录'。

这是否意味着我试图在硬件不兼容的机器上运行?这两台计算机都是SUSE Linux Enterprise Server 11(x86_64)。

回答

1

here我们有:

--deps:此选项将捆绑的所有引用的程序集的有关命令行选项中列出的 组件。这对分发自包含图像很有用。

您确定不忘记在命令行中引用程序集吗?

从这个线程:

Mono Community › General › Mono Community › mkbundle, static, lgmodule

看来,mkbundle不负责包装本次大会。用户通过安装缺少的与glib相关的软件包来解决问题。

在静态参数here请看:

--static:默认情况下mkbundle动态链接到单声道和油嘴滑舌。此选项 会导致它静态链接。

+0

Leniel的+1。该文档明确指出:要自动包含所有引用的依赖项,请使用“--deps”命令行选项。 – karlphillip 2010-07-25 05:26:17

+0

这是我失踪的 - 静态选项。谢谢。 – Fantius 2010-07-26 16:19:28

+0

嗯,看来还是有问题。我编辑了我的问题。 – Fantius 2010-07-26 16:53:58

相关问题