【发布时间】:2019-02-28 21:09:44
【问题描述】:
在我们最近迁移到 SUSE Linux Enterprise Server 12 SP3 之前,我们的机器一直使用 SUSE Linux Enterprise Server 11 SP4。
我们的 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 的软链接(不可用)。
那么我该如何在这种环境下克服这个问题呢?
【问题讨论】:
标签: linux compiler-errors compilation linker-errors suse