代码之家  ›  专栏  ›  技术社区  ›  Fantius

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

  •  2
  • Fantius  · 技术社区  · 14 年前

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

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

    未处理的异常:System.TypeInitializationException:System.Windows.Forms.Xplatui--->System.DllNotFoundException:libc的类型初始值设定项引发了异常 at(包装管理为本机)system.windows.forms.xplatui:uname(intptr) 在system.windows.forms.xplatui..cctor()[0x0000]中:0

    使用export mono_log_level=debug显示更多信息:

    mono信息:dllimport试图加载:“libc”。 mono信息:dllimport加载位置:“libc.so”。 mono信息:dllimport加载库时出错:“/usr/lib64/libc.so:elf头无效”。 mono信息:dllimport加载库:'./libc.so'。 mono信息:dllimport加载库“”时出错。libc.so:无法打开共享对象文件:没有这样的文件或目录。 mono信息:dllimport正在加载:“libc”。 mono信息:dllimport在加载库“libc:cannot open shared object file:no such file or directory”时出错。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   Leniel Maccaferri    14 年前

    here 我们有:

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

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

    从这个线程:

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

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

    看看静态参数 here :

    --静态:默认情况下,mkbundle动态链接到mono和 油嘴滑舌的 . 这个选项 使它以静态方式链接。

    推荐文章