我有一堆使用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 ?
这里有什么警告?
答案 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/