【问题标题】:How to upgrade glibc from version 2.12 to 2.14 on CentOS?如何在 CentOS 上将 glibc 从 2.12 版本升级到 2.14?
【发布时间】:2016-06-07 14:22:03
【问题描述】:

我不知道如何在 CentOS 6.3 上将 glibc 从版本 2.12 升级到 2.14。 我需要你的帮助。

【问题讨论】:

    标签: linux centos glibc


    【解决方案1】:

    您无法在 Centos 6 上安全地更新 glibc。但是,您可以轻松地将 2.14 与 2.12 一起安装,然后使用它来编译项目等。方法如下:

    mkdir ~/glibc_install; cd ~/glibc_install
    wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz
    tar zxvf glibc-2.14.tar.gz
    cd glibc-2.14
    mkdir build
    cd build
    ../configure --prefix=/opt/glibc-2.14
    make -j4
    sudo make install
    export LD_LIBRARY_PATH=/opt/glibc-2.14/lib
    

    【讨论】:

    • 它说 gcc 5.3.1 太旧了,但实际上它太新了。它正在寻找 gcc 3.4 或 4.x。对于 CentOS 6,只需使用现有的 gcc 4.4(而不是 devtoolset-4 中的 5.3.1)。或者,您可以修改 config.in 以接受您的版本,重新运行 autoconf,看看它是否可以工作。
    • 请注意,这对于运行编译为使用 2.14 的二进制文件也很有用(不仅仅是“[编译项目]”)。感谢您的回答!很有帮助。
    • 注意: 必须使用显式动态链接器调用来运行所有程序。只需设置 LD_LIBRARY_PATH 就可能在明天中断(例如,如果 ld.solibc.so.6 之间的内部 GLIBC_PRIVATE ABI 发生变化)。
    • 当我按照这些步骤操作时遇到错误Can't open configuration file /opt/glibc-2.14/etc/ld.so.conf: No such file or directory,有什么关于为什么以及如何修复它的线索吗?
    • 不推荐这样设置 LD_LIBRARY_PATH:hpc.dtu.dk/?page_id=1180
    【解决方案2】:

    我发现这个来源非常有用并且没有太多的 SEO。它列出了您在使用@UnitasBrooks 很好的答案时可能遇到的最常见错误,我担心它会在将来丢失。

    This is the link to the original post

    我会复制,粘贴到这里我遇到了最后一个问题,它已经解决了,但是我没有尝试所有列出的问题/解决方案,你自己试试风险)


    Glibc 安装

    GNU C 库,通常称为 glibc,是 GNU 项目对 C 标准库的实现。我的环境需要 glibc(2.14 版),它需要花点时间才能让它工作,所以希望这可以为您节省一些时间。

    0.Glibc安装依赖

    Bash: sh
    Binutils: ar, as, ld, ranlib, readelf
    Diffutils: cmp
    Fileutils: chmod, cp, install, ln, mknod, mv, mkdir, rm, touch
    Gcc: cc, cc1, collect2, cpp, gcc
    Grep: egrep, grep
    Gzip: gzip
    Make: make
    Gawk: gawk
    Sed: sed
    Sh-utils: date, expr, hostname, pwd, uname
    Texinfo: install-info, makeinfo
    Textutils: cat, cut, sort, tr
    

    1.下载安装包

    http://www.gnu.org/software/libc/ for all versions.
    http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz for version 2.14.
    

    2.编译安装

    为避免干扰当前环境,请通过配置前缀单独编译安装此版本。

    [root@localhost ~]# tar xvf glibc-2.14.tar.gz
    [root@localhost ~]# cd glibc-2.14
    [root@localhost glibc-2.14]# mkdir build
    [root@localhost glibc-2.14]# cd ./build
    [root@localhost build]# ../configure --prefix=/opt/glibc-2.14
    [root@localhost build]# make -j4
    [root@localhost build]# make install
    [root@localhost build]# export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
    

    3.检查安装的glibc版本

    root@localhost:~/intel64/runtime/glibc$ strings libc.so.6 | grep GLIBC
    GLIBC_2.2.5
    GLIBC_2.2.6
    GLIBC_2.3
    GLIBC_2.3.2
    GLIBC_2.3.3
    GLIBC_2.3.4
    GLIBC_PRIVATE
    

    4.编译错误

    错误:

    make[1]: *** 没有规则来制作目标 /mnt/lfs/sourcenew/glibc-build/Versions.all', needed by/mnt/lfs/sourcenew/glibc-build/abi-versions.h'。停下来。

    解决方案:

    sudo apt-get install gawk
    sudo apt-get install texinfo
    

    错误:

    make[2]: *** [/mnt/lfs/sources/glibc-build/misc/syslog.o] 错误1

    解决方案:

    make clean
    make -j2 CFLAGS="-U_FORTIFY_SOURCE -O2 -fno-stack-protector"
    

    错误:

    /Downloads/glibc-2.14/build/elf/ldconfig:无法打开配置文件/opt/glibc-2.14/etc/ld.so.conf:没有这样的文件或目录

    解决方案:

    :/opt/glibc-2.14/etc$ sudo sh -c "echo '/usr/local/lib' >> ld.so.conf" 
    :/opt/glibc-2.14/etc$ sudo sh -c "echo '/opt/lib' >> ld.so.conf"
    

    【讨论】:

      【解决方案3】:

      要更新 glibc,请使用以下命令

      yum -y update glibc
      

      【讨论】:

      • 为什么这个答案被否决了? glibc 的预构建版本是否已经过测试并确认可以更好地在我的 Linux 发行版上运行?
      • @Accountantم CentOS 6(即使 OP 升级到 6.10)具有仅适用于 2.12 的存储库。此拱门上没有 2.14 的 pre-build version of the glibc that has been tested。技术人员没有阅读这个问题,这就是它被否决的原因。更新任何东西就像yum update 一样简单;这种情况更复杂是有原因的,首先需要提出这个问题
      猜你喜欢
      • 2017-05-26
      • 1970-01-01
      • 2018-01-07
      • 2012-06-07
      • 2018-03-26
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多