用MKBundle2包装后,目的地机正在抱怨libmono.so。为什么?
题
我认为MKBundle2的目的是允许一台没有单声道的机器运行单声道应用程序。但它似乎并不是包装libmono.so。我不确定它是否应该是不是,但目的地机器正在抱怨我运行捆绑包时无法找到libmono.so.0。为什么要找那份文件?如果需要,为什么它会在任何地方看,而是在捆绑?如果它应该在捆绑中,为什么没有mkbundle2把它放在那里?我正在使用包含所有依赖项的“--deps”选项。我错过了什么?
添加--static选项后,我在目标机器上获取此结果:
未处理的例外:system.typeinitializationException:system.windows.forms.xplatui的初始化程序类型抛出异常---> system.dllnotfoundException:libc 在(包装器管理到母语)system.windows.forms.xplatui:uname(intptr) 在system.windows.forms.xplatui..cctor()[0x00000]中:0
使用导出mono_log_level= debug显示更多信息:
单声道信息:Dllimport尝试加载:'libc'。 单声道信息:dllimport加载位置:'libc.so'。 单声道信息:dllimport错误加载库:'/usr/lib64/libc.so:无效的elf header'。 单声道信息:dllimport加载库:'./libc.so'。 单声道信息:dllimport错误加载库'./libc.so:无法打开共享对象文件:没有这样的文件或目录'。 单声道信息:dllimport loading:'libc'。 单声道信息:dllimport错误加载库'libc:无法打开共享对象文件:没有这样的文件或目录'。
这是否意味着我正在尝试使用不兼容的硬件运行机器?两台机器都是SUSE Linux Enterprise Server 11(x86_64)。
解决方案
从这里我们有:
- deps:此选项将为所有引用的装配捆绑在一起 命令行选项上列出的程序集。这对于分发自包含图像是有用的。
您是否确定您不会忘记在命令行上引用程序集?
从此线程:
mono社区>常规> mono社区> mkbundle,静态,lgmodule
似乎MKBundle不负责包装此组件。用户通过安装缺少的Glib相关包来解决问题。
看看静态参数这里:
- 静态:默认情况下,mkbundle动态链接到mono和 glib 。这个选项 导致它静态链接。