代码之家  ›  专栏  ›  技术社区  ›  Mike

appname:/lib/libc.so.6:找不到版本“GLIBC\u 2.8”(appname要求)

  •  1
  • Mike  · 技术社区  · 15 年前

    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是在Ubuntu9.10上编译的,试图在Centos 5上运行编译后的产品。

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

    问题,如何通过版本控制来减少这些类型的麻烦? 显然,在较新的linux发行版上进行编译很快就会使您的产品与最旧版本的linux不兼容。 人们如何传送具有良好兼容性的二进制文件?

    1 回复  |  直到 15 年前
        1
  •  2
  •   F'x    15 年前

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

        2
  •  0
  •   jwvh    5 年前

    事实上,我遇到了一个类似的问题 /usr/lib/libc.so.6: version 'GLIBC_2.33' not found .

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