Compilation 从RHEL 6到RHEL 7使用libc和libm

Compilation 从RHEL 6到RHEL 7使用libc和libm,compilation,glibc,Compilation,Glibc,我的应用程序链接到基于RHEL 6构建的库。当我在RHEL7上编译这个应用程序时,链接器会抛出glibc版本的错误。 以下是错误之一: 对符号“\uuu tls\u get\u addr@@GLIBC_2.12”的未定义引用 /lib64/ld-linux-x86-64.so.2:添加符号时出错:命令行中缺少DSO collect2:错误:ld返回了1个退出状态 为了进行修复,我将libc和libm从RHEL6复制到RHEL7,并将它们与RHEL7中的libc和libm一起链接。如果我将libc

我的应用程序链接到基于RHEL 6构建的库。当我在RHEL7上编译这个应用程序时,链接器会抛出glibc版本的错误。 以下是错误之一:

对符号“\uuu tls\u get\u addr@@GLIBC_2.12”的未定义引用 /lib64/ld-linux-x86-64.so.2:添加符号时出错:命令行中缺少DSO collect2:错误:ld返回了1个退出状态

为了进行修复,我将libc和libm从RHEL6复制到RHEL7,并将它们与RHEL7中的libc和libm一起链接。如果我将libc和libm从RHEL6复制到RHEL7,是否会在运行时引起问题? 还有其他方法可以解决这些问题吗

谢谢, Mangesh Sawant

如果我将libc和libm从RHEL6复制到RHEL7,是否会在运行时引起问题

libc.so.6
libm.so.6
从RHEL6复制到例如
~/RHEL6/libs
/tmp
不会引起任何问题(您已经这样做了)

但是,用RHEL6的副本覆盖RHEL7的
/lib64/libc.so.6
,可能会使RHEL7系统上的每个程序崩溃,并使该系统无法转动。确保您有备份和救援磁盘,如果您决定尝试此操作,请知道如何使用它

还有其他方法可以解决这些问题吗


解决这个问题的正确方法是使用针对所需GLIBC的工具链进行构建。更多信息。

虽然Red Hat Enterprise Linux 6附带了glibc 2.12,但它没有
\u tls\u get_addr@GLIBC_2.12
版本化符号,仅限
\u tls\u get_addr@GLIBC_2.3
。该符号也出现在后来的glibc版本中

我认为你面临的问题不能通过降低glibc的等级来解决。如上所述,覆盖系统glibc将使系统无论如何不可旋转