/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解决办法

时间:2022-10-30 16:43:56

今天在自己的Ubuntu 12.04(64位)系统上安装了一个QT_Creator 4.3.1,安装完毕之后选择立即运行,点击下去没有任何反应,我以为没点到,于是再点一次,还是没有任何反应。于是我估计应该是缺少什么库导致QT运行不起来,于是切换到命令行再次运行,这下看到了,系统给出的提示是:

leon@Ubuntu:~/qtcreator-4.3.1/bin$ ./qtcreator
./qtcreator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found (required by /home/leon/qtcreator-4.3.1/bin/../lib/Qt/lib/libQt5Core.so.5) 

原来是glibc这个家伙在搞鬼。看这个提示其实很简单,就是说我的系统中缺少glibc_2.17这个工具。好吧,为了保险,确认一下我的系统中是否真的缺少这个工具:

leon@Ubuntu:~$ strings  /lib/x86_64-linux-gnu/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_2.15
GLIBC_PRIVATE

看来还真是,我最新的版本也才2.15,而QT需要的是2.17。那么, 乖乖的去安装吧。

从百度上找到gnu下的glibc的官网地址(http://ftp.gnu.org/gnu/libc/)。打开网页可以看到如下队列:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解决办法

找到2.17的版本。下载完后,解压,进入目录,编译,安装:

leon@Ubuntu:~$ tar xzvf glibc-2.17.tar.gz
leon@Ubuntu:~$ cd glibc-2.17/
leon@Ubuntu:~/glibc-2.17$ ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for gcc... gcc
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for readelf... readelf
configure: error: you must configure in a separate build directory

可以看到,系统给出了一个错误提示,说必须在另外一个独立的目录下执行configure命令。于是:

leon@Ubuntu:~/glibc-2.17$ mkdir build
leon@Ubuntu:~/glibc-2.17$ cd build
leon@Ubuntu:~/glibc-2.17/build$ ../configure --prefix=/opt/glibc-2.17

注意:这里的“–prefix=/opt/glibc-2.17”的作用是指定glibc的安装目录到opt目录下,目的是防止本次安装的glibc与系统中原来存在的其他版本冲突或者干扰。但是,这样安装之后,必须将该目录手动添加到系统的环境变量中去,否则其他程序将无法引用。

这下子可以走下去了。但是,好景不长,一会的工夫,又给出了一个错误提示:

......
checking for gmsgfmt... no
checking for msgfmt... msgfmt
checking version of msgfmt... 0.18.1, ok
checking for makeinfo... no
checking for sed... sed
checking version of sed... 4.2.1, ok
checking for gawk... no
checking for nm... nm
configure: error: 
*** These critical programs are missing or too old: gawk
*** Check the INSTALL file for required versions.

原来是缺少gawk工具。百度一下,发现这也是一个很常用的工具,我系统中的版本太旧了,无法满足它的要求。于是,再次向度娘需求帮助。找到gawk的官网进行下载(http://ftp.gnu.org/gnu/gawk/)。打开网页可以看到如下队列:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found 解决办法

找一个你认为合适的版本下载吧。我本人选的4.1.4的版本。

下载完后,解压,进入目录,编译,安装:

leon@Ubuntu:~$ cp /mnt/share/tmp/gawk-4.1.4.tar.gz gawk-4.1.4.tar.gz
leon@Ubuntu:~$ tar xvzf gawk-4.1.4.tar.gz
leon@Ubuntu:~$ cd gawk-4.1.4/
leon@Ubuntu:~/gawk-4.1.4$ ./configure
leon@Ubuntu:~/gawk-4.1.4$ make
leon@Ubuntu:~/gawk-4.1.4$ sudo make install

一路顺畅,等待安装完毕之后。再回到glibc的目录下,重新执行configure的命令。这下成功了。然后顺序执行make和make install,直到全部完成。


题后话:

上文中介绍的方法,其实只是完成了对新版本glibc工具的安装,但是,装完并不代表能用,系统中可用的glibc环境仍然没有发生变化(因为系统的glibc环境比较棘手,我不敢去私自修改)。所以,qt还是无法启动。因此,我自己倒腾的最后结果,还是没能把qt安装成功。不过,暂时的失败并不代表完全没有办法,我决定先将这个过程记录在此,日后若有机会,再过来慢慢研究。

当然,若是各位看官有兴趣,大可以去百度一下,如何去修改系统的glibc环境,因为,毕竟还是有不少高人动手修改成功了。当然,这是冒着系统崩溃的风险来操作的。所以,各位量力而行吧~~~