【问题标题】:appname: /lib/libc.so.6: version `GLIBC_2.8' not found (required by appname)应用程序名:/lib/libc.so.6:找不到版本“GLIBC_2.8”(应用程序名需要)
【发布时间】:2010-07-26 20:03:16
【问题描述】:

ldd -v 应用名称

linux-gate.so.1 =>  (0x00949000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00cea000)
libm.so.6 => /lib/libm.so.6 (0x00a83000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00ba1000)
libc.so.6 => /lib/libc.so.6 (0x0015c000)
/lib/ld-linux.so.2 (0x0012f000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00b93000)

Version information:
appname:
    libm.so.6 (GLIBC_2.0) => /lib/libm.so.6
    libc.so.6 (GLIBC_2.8) => not found
    libc.so.6 (GLIBC_2.2) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.3.2) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.7) => not found
    libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
    libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.2.4) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
    libstdc++.so.6 (CXXABI_1.3) => /usr/lib/libstdc++.so.6
    libstdc++.so.6 (GLIBCXX_3.4.5) => /usr/lib/libstdc++.so.6
    libstdc++.so.6 (GLIBCXX_3.4) => /usr/lib/libstdc++.so.6
    libpthread.so.0 (GLIBC_2.2) => /lib/libpthread.so.0
    libpthread.so.0 (GLIBC_2.1) => /lib/libpthread.so.0
    libpthread.so.0 (GLIBC_2.0) => /lib/libpthread.so.0
    libpthread.so.0 (GLIBC_2.3.2) => /lib/libpthread.so.0
/lib/libpthread.so.0:
    ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
    ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
    ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
    libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.3.2) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.2) => /lib/libc.so.6
    libc.so.6 (GLIBC_PRIVATE) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
/lib/libm.so.6:
    ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
    libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
/usr/lib/libstdc++.so.6:
    ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
    libgcc_s.so.1 (GCC_4.2.0) => /lib/libgcc_s.so.1
    libgcc_s.so.1 (GLIBC_2.0) => /lib/libgcc_s.so.1
    libgcc_s.so.1 (GCC_3.3) => /lib/libgcc_s.so.1
    libgcc_s.so.1 (GCC_3.0) => /lib/libgcc_s.so.1
    libc.so.6 (GLIBC_2.3.2) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.2) => /lib/libc.so.6
/lib/libc.so.6:
    ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2
    ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2
    ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2
/lib/libgcc_s.so.1:
    libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.2.4) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
    libc.so.6 (GLIBC_2.0) => /lib/libc.so.6

appname 在 Ubuntu 9.10 上编译,试图在 Centos 5 上运行编译好的产品。

我的猜测是 Centos5 的 /lib/libc.so.5 提供了最高版本 GLIBC_2.4,但 appname 调用 GLIBC_2.8。

但有趣的是。直到我开始链接到 boost 的系统库,这个问题才发生。之前它只是 boost 的线程库,但现在我需要线程和系统。 我确实在那个 Ubuntu 系统上编译了 boost。 我现在将尝试在 CentO 上编译 boost,并带来生成的 .a 文件。 我正在链接到 boost .a 文件。

问题,如何通过版本控制减少这些类型的麻烦? 是否使用任何技巧,例如设置具有较低库版本的 chroot 环境,您将在其中编译产品? 显然,在较新的 linux 发行版上编译会很快使您的产品与最旧的 linux 版本不兼容。 人们如何发布具有良好兼容性的二进制文件? 是的,我可以做静态链接,但是libc不能正确静态链接?

【问题讨论】:

  • 在 CentO 上编译 boost 并将 .a 文件带到 Ubuntu 并没有帮助。当我在 Ubuntu 上编译并在 CentOs 上运行时,我仍然得到:appname: /lib/libc.so.6: version `GLIBC_2.8' not found (required by appname)

标签: linux gcc


【解决方案1】:

使用 chroot 环境是一种方法,但您不需要所有这些工作。您可以在某处设置较旧的 SDK 参考版本(包括 libc 和其他),然后强制 gcc 链接该版本,而不是标准系统目录中的库和头文件。执行此操作的 GCC 选项是:-isystem-isysroot--sysroot

例如,Apple 的 gcc 经常这样做,根据您所针对的操作系统版本链接到各种 SDK 版本。

【讨论】:

    【解决方案2】:

    其实我遇到了和/usr/lib/libc.so.6: version 'GLIBC_2.33' not found类似的问题。

    这是因为有新版本的 Glibc 可用。要解决此问题,您需要升级 Glibc 版本。

    pacman -Sy // update your repo
    pacman -S glibc lib32-glibc
    

    【讨论】:

      猜你喜欢
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 2016-12-07
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多