如何在 CentOS 6.5 中将 glibc 更新到 2.14

ton*_*nga 55 centos upgrade glibc

我想在我的 CentOS 6.5 机器上安装 Android NDK。但是当我运行程序时,它说它需要 glibc 2.14 才能运行。我的 CentOS 6.5 只安装了 Glibc 2.12。所以我尝试通过以下方式更新 glibc:

$ sudo yum update glibc
Run Code Online (Sandbox Code Playgroud)

但是之后我发现glibc版本仍然是2.12,而不是2.14。

$ ldd --version
ldd (GNU libc) 2.12
Run Code Online (Sandbox Code Playgroud)

我认为 glibc 2.14 在 CentOS 存储库上可能不可用。那么如何在 CentOS 6.5 上将其更新为 glibc 2.14?

Uni*_*oks 83

无法更新glibcCentos 6安全。然而,你可以安装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${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
Run Code Online (Sandbox Code Playgroud)

  • 想提一下,在慢速 AWS 上构建过程需要 2.5 小时。下一个信息可能对某人有用:上面的指令修复了 `psycopg2` 问题 `ImportError: /lib/libc.so.6: version 'GLIBC_2.14'`(我使用 Centos 6.5 和 PostgreSQL v 9.6) (3认同)
  • 也可以用于以后的版本;只需将“2.14”更改为“2.23”或您需要的任何版本,如以下内容突出显示:`/usr/local/lib/somlelib.so: undefined reference to 'somefunction@GLIBC_2.23'`(最后几位数字是版本)。为了使编译更快,如果您的 cpu 上有 8 个线程等,请使用 make -j8。我的在几分钟内完成。 (3认同)
  • 请注意,设置“LD_LIBRARY_PATH”会带来其自身的问题。从长远来看,这并不是一个理想的解决方案。 (2认同)

小智 8

要并行安装 glibc 2.14,请添加配置前缀:

tar zxvf glibc-2.14.tar.gz
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/opt/glibc-2.14
make -j4
make install
Run Code Online (Sandbox Code Playgroud)

按照此过程,您将能够构建 2.14,但您需要告诉编译器在哪里查找 glibc。

以下是将 glibc 公开给程序的方法。

  1. LD_LIBRARY_PATH=/opt/glibc-2.14/lib

    导出 LD_LIBRARY_PATH。

    该库在您当前的登录会话期间公开。

  2. 您可以像这样永久链接您的新 glibc 版本,但请阅读下面的警告:

    ln -sf /opt/glibc-2.14/glibc-2.14.so /lib/libc.so.6。

由于 libc.so.6 只是一个符号链接。执行上述命令将使链接指向新的 glibc 库。但是,不建议执行此步骤,因为 Linux 中有许多程序依赖于旧版本并且会停止工作。

  • 更改符号链接时要非常小心,如果创建了错误的符号链接,最终可能会破坏很多东西。 (3认同)

小智 1

常见的替代技术。并行安装 GLIBC 2.14(将其安装到 /opt 目录)然后即可供需要它的程序使用,而不会破坏您的核心操作系统。

  • 你会怎么做?下载 rpm 并? (8认同)