编译 GNU C Library(glibc)
经过多次尝试,最终在系统上使用自己编译的 glibc 的想法失败了。虽然可以编译成功,但在使用自己编译的 glibc 库时有很多问题。
glibc 是 GNU C Library 的缩写,是 GNU 项目发布的 C 标准库的实现。它为 GNU/Linux 系统提供了核心系统接口,包括基本的输入输出、内存管理、字符串处理、数学运算等功能。glibc 是许多 Linux 发行版的默认 C 库,广泛用于支持系统和应用程序的运行。
⚠️ 注意:glibc 是重要系统组件,不要直接覆盖系统 glibc,会导致系统挂掉。应该安装到单独的目录。
-
在 GNU FTP 服务器下载
glibc
压缩包并解压 -
创建一个同级目录
glibc-build
。你的目录结构应该是这样:
. ├── glibc-build └── glibc-VERSION
-
进入
glibc-build
配置并编译:cd glibc-build ../glibc-VERSION/configure --prefix=$HOME/.local/opt/glibc make -j$(nproc) make install
Troubleshooting
configure
命令报错
在执行 ../glibc-VERSION/configure --prefix=$HOME/.local
命令时可能会看到 make
版本过低的报错。然而如果你确定自己安装了最新的 make
,那么可能是由于 configure
检测了 gmake
的版本而不是 make
的版本。你需要创建一个指向 make
的 gmake
软链接。
在使用了新编译的 glibc 库后很多命令都不能用了
在编译完成后,我尝试在新的 glibc 库下运行一些常用命令,发现这些命令都不能用了:
$ LD_LIBRARY_PATH="$HOME/.local/opt/glibc-2.40/lib:$LD_LIBRARY_PATH" ls
ls: /lib64/ld-linux-x86-64.so.2: version `GLIBC_2.35' not found (required by /data2/lx/.local/opt/glibc-2.40/lib/libc.so.6)