用高版本的gcc编译的程序运行在低版本的机器上时候提示”libc.so.6: version ‘GLIBC_2.14’ not found” 这是由于glibc版本太低造成的,忍不住吐槽办公网的很多机器还是centos6.9,经常遇到这个问题得手动安装; 查看系统glibc支持的版本
strings /lib64/libc.so.6 |grep GLIBC_
rpm -qa |grep glibc
最高只支持2.12版本。因此需要将glibc支持的版本升级到GLIBC_2.14以上 下载地址:http://ftp.gnu.org/gnu/libc/ (有点慢) 选好版本后wget 对应链接即可
wget http://ftp.gnu.org/gnu/libc/glibc-2.14.1.tar.gz
#下载完成后解压,
tar zxvf glibc-2.14.1.tar.gz
我就直接在/root/glibc-2.14.1 下进行解压,之后 mkdir build && cd build/ 然后进行安装
../configure --prefix=/usr/local/glibc-2.14.1
make -j4 && make install
make 过程出现错误:
/usr/bin/install: `include/limits.h' and `/usr/local/glibc-2.14.1/include/limits.h' are the same file
如果直接把编译的目录和安装的目录放一起可能出错,原因就是解压的glic-2.14.tar.gz源码和编译时定义的目录../configure –prefix=/usr/local/glibc-2.14.1放到了一起。 把下载解压的glic-2.14 和prefix后的分开即可;
在make install过程中出现如下错误:
Can't open configuration file /usr/local/glibc-2.14.1/etc/ld.so.conf: No such file or directory
直接查找然后复制到etc目录就能继续执行make下去
find / -name "ld.so.conf"
cp /etc/ld.so.conf /usr/local/glibc-2.14.1/etc/
另外就是LD_LIBRARY_PATH路径中如果末尾出现了: 或者中间出现了::都会导致找不到对应的LD_LIBRARY_PATH 出错; 如果出现下面的错误,那么可重新export LD_LIBRARY_PATH=去掉非法字符后的路径
configure: error:
*** LD_LIBRARY_PATH shouldn't contain the current directory when
*** building glibc. Please change the environment variable
*** and run configure again.
LD_LIBRARY_PATH不能以终结符作为开始和最后一个字符,不能有2个终结符连在一起,所以修改下LD_LIBRARY_PATH即可
然后导入环境变量,程序就能正常启动;
export LD_LIBRARY_PATH=/usr/local/glibc-2.14.1/lib:$LD_LIBRARY_PATH
后续每次不可能都要export,因此要更新系统的 libc.so.6;
rm -rf /lib64/libc.so.6
ln -s /usr/local/glibc-2.14.1/lib/libc-2.14.1.so /lib64/libc.so.6
#上述rm执行后可能导致系统命令不可用可在执行时候加入环境变量
LD_PRELOAD=/usr/local/glibc-2.14.1/lib/libc-2.14.1.so ln -s /usr/local/glibc-2.14.1/lib/libc-2.14.1.so /lib64/libc.so.6
在glibc安装后重新查看版本后发现最好已经到了2.14
strings /lib64/libc.so.6 |grep GLIBC_
LIBC_2.14
最后的小插曲,程序直接./二进制可以启动,但是supervisor 启动不行,需要重新启动supervisor才行
2021-01-22 17:23:27,303 INFO exited: xxx(exit status 1; not expected) 2021-01-22 17:23:30,307 INFO spawned: ‘xxx’ with pid 13891
参考: Centos6.4升级glibc_2.14 解决’GLIBC_2.14’ not found问题时遇到的坑 编译 glibc-2.14 时出现的一个LD_LIBRARY_PATH不路径bug
本文链接:https://iokde.com/post/centos6-glibc-update.html,参与评论 »
--EOF--
发表于 2021-01-22 18:20:00。
本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。tools更多说明 »
提醒:本文最后更新于 1228 天前,文中所描述的信息可能已发生改变,请谨慎使用。
Comments