我认为 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)。