在RHEL 6中运行RHEL 7 gcc 4.7中编译的二进制文件

时间:2016-09-20 20:13:13

标签: linux gcc rhel rhel6 rhel7

我有一堆使用gcc 4.7在RHEL 7中构建的库。是否可能

1) Can the binary be executed in RHEL 6 host without re-compiling ? 

2) The shared objects produced in RHEL 7 hosts with gcc 4.7 be used 
on a RHEL 6 with gcc 4.4 compiler ?

这里有什么警告?

2 个答案:

答案 0 :(得分:1)

如果您不会静态链接您的二进制文件,那么您的问题将是共享库:

gcc通常将C程序与:

联系起来
  • glibc - C运行时库的实现。 RHEL 6和7具有该库的不同版本。 glibc使用符号标记,即:

    myaut@panther:/tmp> readelf -s /lib64/libc.so.6 | grep ' open@'
    1679: 00000000000d8a70    90 FUNC    WEAK   DEFAULT   12 open@@GLIBC_2.2.5
    

    因此,如果您的程序与RHEL6中存在更新标记的函数链接,您将无法运行程序。

  • libgcc_s是一个GCC运行时,主要包含硬件平台上不可用的函数(即32位二进制文​​件不支持64位long long算术,因此它们需要库要做到这一点),把它看起来是可选的。

最后,GCC 4.4和4.7具有兼容的ABI,因此不会因为编译器不同而遇到麻烦。

答案 1 :(得分:0)

如果您使用Red Hat Developer Toolset附带的GCC编译器,RH保证在主要RHEL版本上编译的应用程序也将在+1版本上运行,例如在RHEL 6上编译并在RHEL 6或7上运行

有v4,但也有GCC 5和6。

请参阅http://developers.redhat.com/products/developertoolset/overview/