修复libc.so.6 .意外的reloc类型0x25



我试图在没有互联网连接的SUSE系统上安装gcc4.9。我在Ubuntu机器上编译gcc并将其安装到前缀中,然后将前缀文件夹复制到SUSE机器上。当我试图运行它时,gcc抱怨找不到GLIBC_2_14,所以我在线下载了libc6的rpm并将其包含到前缀文件夹中。我的LD_LIBRARY_PATH包括prefix/lib和prefix/lib64。当我现在尝试运行任何程序(ls, cp, cat等)时,我得到错误error while loading shared libraries: /home/***/prefix/lib64/libc.so.6: unexpected reloc type 0x25

是否有任何方法可以解决这个问题,以便我可以在这个系统上启动和运行gcc4.9 ?

作为一种替代方案,是否有可能静态地构建gcc,以便我在计算机之间传输它时完全不必担心链接?

my LD_LIBRARY_PATH包含prefix/lib和prefix/lib64

请参阅答案,以解释为什么这不能工作。

是否有任何方法可以解决这个问题,以便我可以在这个系统上启动和运行gcc4.9 ?

最好的办法是安装SuSE系统附带的任何GCC包,然后使用 GCC配置并安装GCC -4.9。

如果由于某些原因你不能这样做,这个答案有一些方法可以让你在新系统上构建gcc-4.9,并且在旧系统上仍然可以工作。

是否有可能静态地构建gcc,以便我在计算机之间传输它时完全不必担心链接?

与普遍的看法相反,在Linux上,完全静态二进制文件通常比动态二进制文件更不可移植。

最新更新