我们的机器一直使用SUSE Linux Enterprise Server11 SP4,直到我们最近迁移到SUSE Linux Enterprise Server12 SP3。
我们的C++工具在SuSe 11上编译时没有任何问题。但当我们在SuSe 12中编译工具时,我们遇到了以下链接器错误:
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../libXm.so when searching for -lXm
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lXm
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../libXt.so when searching for -lXt
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lXt
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /usr/lib64/gcc/x86_64-suse-linux/4.8/../../../libX11.so when searching for -lX11
/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lX11经过一番探索,我终于知道64位编译是成功的。但是我想要32位的二进制文件。
我知道链接器正在搜索文件libXm.so、libXt.so、libX11.so,但是找不到正确的文件。
来自SuSe的以下页面告诉我们,从SuSe12开始不再支持x86:https://www.suse.com/products/server/download
当我在SuSe 11 SP4中检查这些文件时,它是可用的:
/usr/lib/libXm.so -> libXm.so.4.0.1
/usr/lib/libXt.so -> libXt.so.6.0.0
/usr/lib/libX11.so -> libX11.so.6.2.0在SuSe 12中,这些.so在/usr/lib下不可用。但是libXm.so.4.*、libXt.so.6.*或libX11.so.6.*都在/usr/lib下。缺少从这些文件到.so的唯一软链接(不可用)。
那么在这种环境下,我该如何克服这个问题呢?
发布于 2018-11-18 06:43:48
尝试zypper se -snt package 32bit | grep devel,看看缺少哪些与X11相关的开发包。它们中的大多数都在SDK中。但正如我刚才所说,32位的X11开发可能不再受支持。请查看有关此主题的SLE12的ReleaseNotes。
https://stackoverflow.com/questions/52494858
复制相似问题