2

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

添加 --static 选项后,我在目标机器上得到了这个结果:

未处理的异常:System.TypeInitializationException:System.Windows.Forms.XplatUI 的类型初始化程序引发了异常---> System.DllNotFoundException:libc at (wrapper managed-to-native) System.Windows.Forms.XplatUI:uname (intptr) 在 System.Windows.Forms.XplatUI..cctor () [0x00000] 在:0

使用 export 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 加载:'libc'。Mono-INFO:DllImport 错误加载库“libc:无法打开共享对象文件:没有这样的文件或目录”。

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

4

1 回答 1

1

这里我们有:

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

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

从这个线程:

Mono 社区 › 一般 › Mono 社区 › mkbundle, static, lgmodule

看来 mkbundle 不负责打包此程序集。用户通过安装缺少的 glib 相关包解决了这个问题。

看看这里的静态参数:

--static:默认情况下 mkbundle 动态链接到 mono 和glib。此选项导致它改为静态链接。

于 2010-07-23T09:31:40.430 回答