维燕的数字花园GLIBC 笔记 | 安装与使用

维燕的数字花园GLIBC 笔记 | 安装与使用

前言¶

如果你不太了解 glibc,请不要随便升级,请不要随便升级,请不要随便升级!重要的事情说三遍!!!

Glibc 是 GNU 发布的 libc 库,即 c 运行库。glibc 是 linux 系统中最底层的 api,几乎其它任何运行库都会依赖于 glibc。glibc 除了封装 linux 操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。由于 glibc 囊括了几乎所有的 UNIX 通行的标准,可以想见其内容包罗万象。而就像其他的 UNIX 系统一样,其内含的档案群分散于系统的树状目录结构中,像一个支架一般撑起整个作业系统。在 GNU/Linux 系统中,其 C 函式库发展史点出了 GNU/Linux 演进的几个重要里程碑,用 glibc 作为系统的 C 函式库,是 GNU/Linux 演进的一个重要里程碑。

由于 Glibc 是一个比较底层的依赖库,为了 CentOS 6 安全,你可能不太想冒着风险直接升级,特别是对于一些运行这其他业务的服务器。前车之鉴就在这里!

一次”胆战心惊”的真实集群运维经历

安装¶

CentOS 6.5,最高支持 glibc 的版本为 2.12,而有些程序要 2.14 或者更高版本,所以需要升级或者额外安装。

$ strings /lib64/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_2.4

GLIBC_2.5

GLIBC_2.6

GLIBC_2.7

GLIBC_2.8

GLIBC_2.9

GLIBC_2.10

GLIBC_2.11

GLIBC_2.12

GLIBC_2.13

GLIBC_2.14

GLIBC_PRIVATE

常规的安装方法如下:

$ 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 shouldn’t contain the current directory when building glibc 提示,可以按照下面的方法处理:

configure: WARNING:

*** These auxiliary programs are missing or incompatible versions: makeinfo

*** some features will be disabled.

*** Check the INSTALL file for required versions.

checking LD_LIBRARY_PATH variable... contains current directory

configure: error:

*** LD_LIBRARY_PATH shouldn't contain the current directory when

*** building glibc. Please change the environment variable

*** and run configure again.

先 echo $LD_LIBRARY_PATH 先看一下结果;

确保结果中不包含了 “:” 的结尾!

unset LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/path/to/prefix/dir/lib

使用¶

Segmentation fault¶

很多人喜欢在手动安装完以后,通过设置 LD_LIBRARY_PATH 环境,然后进行使用,但是这样的用法很容易会导致 **Segmentation fault (core dumped) **的异常。折中的解决方法如下:

/path/to/newglibc/lib/ld-linux-x86-64.so.2 /path/to/your_app

如:

/path/to/newglibc/lib/ld-linux-x86-64.so.2 /bin/ls

PatchELF¶

在同一台服务器上安装并使用多个版本的 GLIBC,StackOverflow 上很多人都在推荐使用 PatchELF 这个工具,PatchELF 是一个用于修改现有 ELF 可执行文件和库的简单实用程序。

ELF: 可执行与可链接格式(Executable and Linkable Format),常被称为 ELF 格式。

StackOverflow 上关于在同一台服务器上安装并使用多个版本的 GLIBC 的讨论可以参考:

Multiple glibc libraries on a single host

PatchELF 是一个开源的工具,GitHub 链接:https://github.com/NixOS/patchelf,用法可以参考:

找不到动态链接库?

Please Wait… | Cloudflare

参考资料¶

Haidar Ali,《Multiple glibc on a Single Linux Machine》,Baeldung on Linux

名本无名,《找不到动态链接库?》,知乎专栏

Unix & Linux,《如何在 CentOS 6.5 中将 glibc 更新到 2.14》,QA Stack

試毅-思伟,《Linux 下安装 GLIBC_2.15》,云+社区 - 腾讯云

caosiyang,《SCL 基本用法》,一个单板滑雪爱好者的编程笔记

zzhongcy,《CentOS/RHEL 开发环境之 devtoolset》,CSDN 博客 - 专业 IT 技术发表平台

2025-07-06

🌸 相关推荐

柒浠的意思及寓意
28365备用网址

柒浠的意思及寓意

📅 07-08 👀 5064
纯黄金和纯银哪个比较软
英国正版365官方网站

纯黄金和纯银哪个比较软

📅 07-03 👀 8653
王者荣耀的英雄池位置在哪里 英雄池位置说明
彩票365软件是什么样的

王者荣耀的英雄池位置在哪里 英雄池位置说明

📅 07-02 👀 5074