glibc编译安装
glibc是gnu发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现。
wget https://kojipkgs.fedoraproject.org//packages/glibc/2.30.9000/1.fc32/src/glibc-2.30.9000-1.fc32.src.rpm
../configure
make && make install
【Makeconfig:42: *** missing separator. Stop.】【configure: error: you must configure in a separate build directory】解决办法:
新建一个目录,然后进入该目录,用绝对路径编译。(一般在解压目录新建 ./glibc_build)
【configure: error:
*** These critical programs are missing or too old: compiler
】解决:
更新 gcc
【*** On GNU/Linux systems the GNU C Library should not be installed into
*** /usr/local since this might make your system totally unusable.
*** We strongly advise to use a different prefix. For details read the FAQ.
*** If you really mean to do this, run configure again using the extra
*** parameter `--disable-sanity-checks'.】
出现这个错误的原因在于,如果没指定prefix,则系统把这个程序装在/usr/local目录下。但是,c标准库要求必须安装在与根文件系统相同的分区中,否则不能用。但是/usr这个挂载点可能处在外部的分区。
解决方法就是指定prefix到/usr,这时候configure程序会自动把必须的内容装在/lib下(这个目录肯定与根目录同分区),扩展内容再装到/usr/lib下。
【rm -rf /lib64/libc.so.6后出现
ln -s /lib64/libc-2.14.so /lib64/libc.so.6
l error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
】
当出现上面的状况时候,可以使用以下方法解决(假设libc-2.14.so已经拷贝到/lib64/目录下,“LD_PRELOAD”是一个环境变量,定义在程序运行前优先加载的动态链接库。):
LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so /lib64/libc.so.6
当然如果升级失败,还可以使用下面命令还原至系统升级前的版本libc-2.12.so:
LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
或者可以安装到其他目录:
../configure --prefix=/opt/glibc
然后通过环境变量来指定glibc
export LD_PRELOAD=/opt/glibc/libc-2.14.so
export LD_LIBRARY_PATH=/opt/glibc/lib