我试图在没有互联网连接的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上,完全静态二进制文件通常比动态二进制文件更不可移植。