跳过不兼容的库 (mkbundle)
我有一个 .Net 程序,使用“mono Program.exe”可以正常工作,但现在我尝试在同一台计算机上使用“mkbundle -o prog Program.exe --deps”,它返回以下错误:
/usr/bin/ld: 跳过不兼容 搜索时为 /opt/novell/mono/lib/pkgconfig/../../lib/libmono-2.0.so 对于 -lmano-2.0 /usr/bin/ld:跳过不兼容 搜索时为 /opt/novell/mono/lib/pkgconfig/../../lib/libmono-2.0.a 对于 -lmano-2.0 /usr/bin/ld:找不到 -lmano-2.0 收集2:ld 返回 1 退出状态
系统是 x86_64 上的 CentOS 5.7。我已使用这些说明在此系统上安装了mono 。有谁知道为什么 mono 有效,但 mkbundle 不行?我该如何修复它?
I have a .Net program, which works fine using "mono Program.exe", but now I am trying to use "mkbundle -o prog Program.exe --deps" on the SAME machine, and it returns the following error:
/usr/bin/ld: skipping incompatible
/opt/novell/mono/lib/pkgconfig/../../lib/libmono-2.0.so when searching
for -lmono-2.0 /usr/bin/ld: skipping incompatible
/opt/novell/mono/lib/pkgconfig/../../lib/libmono-2.0.a when searching
for -lmono-2.0 /usr/bin/ld: cannot find -lmono-2.0 collect2: ld
returned 1 exit status
The system is CentOS 5.7 on x86_64. I have installed mono on this system using these instructions. Does anyone know why mono works, but mkbundle doesn't? How can I fix it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可能安装了 32 位版本的 mono(适用于像您这样的 x86_64 系统),但 mkbundle 将尝试使用默认编译器设置(64 位)进行编译,并且仅找到该库的 32 位版本。
要解决这个问题,您必须安装 64 位版本的 mono 来匹配您的系统,或者(假设您还安装了其余所需的 32 位库,如 libc 和编译器)在 32 位模式下使用 mkbundle 进行编译,方法是添加mkbundle 在控制台上打印的编译器命令行的 -m32 选项(您还需要使用 mkbundle 的 -c 选项)。
You likely installed the 32bit version of mono (which works on x86_64 systems like yours), but mkbundle will try to compile with the default compiler settings (which are 64bit) and only find the 32 bit version of the library.
To solve the issue you have either to install the 64 bit version of mono to match your system or (assuming you install also the rest of the needed 32 bit libraries, like libc and compilers) compile with mkbundle in 32 bit mode, by adding the -m32 option to the compiler command line that mkbundle prints on the console (you'll also need to use the -c option to mkbundle).