我们的机器原来使用 SUSE Linux Enterprise Server 11 SP4,直到最近我们才迁移到 SUSE Linux Enterprise Server 12 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
缺失(不可用)。
那么我该如何在这种环境下克服这个问题?