用mkbundle2打包后,目标机器抱怨libmono.so。为什么?

时间:2010-07-14 21:39:14

标签: .net linux mono mkbundle

我认为mkbundle2的目的是允许没有安装单声道的机器运行单声道应用程序。但它似乎不包装libmono.so。我不确定它是否应该,但目标机器抱怨它在运行捆绑包时找不到libmono.so.0。为什么要找那个文件?如果需要,为什么它会在任何地方寻找,但在捆绑中?如果它应该在捆绑中,为什么没有mkbundle2把它放在那里?我使用“--deps”选项来包含所有依赖项。我错过了什么吗?

添加--static选项后,我在目标计算机上获得此结果:

未处理的异常:System.TypeInitializationException:System.Windows.Forms.XplatUI的类型初始化程序抛出异常---> System.DllNotFoundException:libc   at(包装器托管到本机)System.Windows.Forms.XplatUI:uname(intptr)   在System.Windows.Forms.XplatUI..cctor()[0x00000]中:0

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

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

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

1 个答案:

答案 0 :(得分:1)

here我们得到了:

  

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

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

从这个帖子:

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

似乎mkbundle不负责打包此程序集。用户通过安装丢失的glib相关软件包解决了这个问题。

查看静态参数here

  

- 静态:默认情况下,mkbundle动态链接到mono和 glib 。这个选项   导致它静态链接。