【摘 要】 本文讲述的是Ubuntu18.04上面升级glibc到2.29版本的辛酸而又励志故事。在查遍了百度,google,必应等,只有一位同学遇到了和我一样的问题,且他没有解决这个问题。为了记录我的英勇历史,写下这篇日记。
一、介绍
1.1 环境说明
- 系统:ubuntu18.04
1.2 问题介绍
安装完mmdetection后运行,报以下错误:
1 | /lib/x86_64-linux-gnu/libm.s0.6: version 'GLIBC_2.29' not found |
经过查找,发现是因为glibc版本不对,需要升级到2.29版本。
辛酸的故事从这里开始
二、解决过程
apt是安装不了的,不要想了。
2.1 下载glibc_2.29源码
解压到任意目录。
2.2 踩坑记录
第一个坑:不能再当前目录下直接configure,要重新建一个空文件夹,然后cd进去,在里面进行编译。(官方的解释是:这样如果出错,可以把这个文件夹下的内容删掉,比较方便。。。。官方脑子一定是进水了)
1
2
3
4进入解压的文件夹后
mkdir build
cd build
../configure prefix=/opy/glibc这一步可能出错,提示缺少几个包,有人是一个,有人是几个,这些包可以用
apt-get install的方法直接安装。第二个坑:这是个深坑,官方的文件里面没有
manual文件夹,而在编译的时候,但是却需要这个文件夹里面的文件,具体报错过程如下:1
make -j8
注:
-j8的意思是,8线程同时编译。报错如下:
1
2
3
4
5
6
7The compilation fails with the following error:
make[2]: *** No rule to make target `../manual/errno.texi', needed by `../sysdeps/gnu/errlist.c'. Stop.
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/home/bibop554/compile_libc/eglibc-2.11.3/stdio-common'
make[1]: *** [stdio-common/subdir_lib] Error 2
make[1]: Leaving directory `/home/bibop554/compile_libc/eglibc-2.11.3'
make: *** [all] Error 2既然看出来少了manual文件夹,就去找。。还真的找到了,附上github下载地址。这个里面有个manual文件夹,复制这个文件夹到你下载解压的glibc2.29中,make成功
第三步:安装
1
make install
只要第二步成功了,这步我没有碰到问题。
第四步:设置软连接
1
sudo ln -sf /opt/glibc/lib/libm.so.6 /lib/x86_64-linux-gnu/libm.so.6
我这里需要的是libm,所以只设置了一个软连接。里面还有libc等等
代码至此成功运行,glibc采坑结束。
三、总结
安装完后口吐芬芳:glibc官方垃圾