我认为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)。
Leniel的+1。该文档明确指出:要自动包含所有引用的依赖项,请使用“--deps”命令行选项。 – karlphillip 2010-07-25 05:26:17
这是我失踪的 - 静态选项。谢谢。 – Fantius 2010-07-26 16:19:28
嗯,看来还是有问题。我编辑了我的问题。 – Fantius 2010-07-26 16:53:58