【转发】解决"libc.so.6: version `GLIBC_2.14' not found"问题
编译了一个Linux程序,在RedHat上运行时提示"libc.so.6: version `GLIBC_2.14' not found",网上搜到这个问题的解决办法,原文http://www.myexception.cn/linux-unix/1622052.html:
【linux】提示"libc.so.6: version `GLIBC_2.14' not found",系统的glibc版本太低
0.以下在系统CentOS 6.3 x86_64上操作
1.试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系统的glibc版本太低,软件编译时使用了较高版本的glibc引起的:
1 2 3 4 5 6 7 8 9 | [ghui@StuOS bin]$ pwd /var/VMdisks/cross/mingw32/bin [ghui@StuOS bin]$ ls lrelease QtCore4.dll QtNetwork4.dll QtSql4.dll QtXml4.dll moc QtDeclarative4.dll QtOpenGL4.dll QtSvg4.dll rcc phonon4.dll QtGui4.dll QtScript4.dll QtTest4.dll uic qmake QtMultimedia4.dll QtScriptTools4.dll QtWebKit4.dll [ghui@StuOS bin]$ . /qmake . /qmake : /lib64/libc .so.6: version `GLIBC_2.14' not found (required by . /qmake ) |
2.查看系统glibc支持的版本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | [ghui@StuOS bin]$ strings /lib64/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_PRIVATE [ghui@StuOS bin]$ rpm -qa | grep glibc glibc-static-2.12-1.80.el6_3.6.x86_64 glibc-headers-2.12-1.80.el6_3.6.x86_64 glibc-common-2.12-1.80.el6_3.6.x86_64 glibc-devel-2.12-1.80.el6_3.6.x86_64 glibc-static-2.12-1.80.el6_3.6.i686 glibc-devel-2.12-1.80.el6_3.6.i686 glibc-2.12-1.80.el6_3.6.i686 glibc-2.12-1.80.el6_3.6.x86_64 |
3.可以看到最高只支持2.12版本,所以考虑编译解决这个问题: |
a. 到http://www.gnu.org/software/libc/下载最新版本,我这里下载了glibc-2.14.tar.xz 这个版本,解压到任意目录准备编译
b.这里解压到/var/VMdisks/glibc-2.14/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | [ghui@StuOS bin]$ cd /var/VMdisks/glibc-2 .14/ [ghui@StuOS glibc-2.14]$ pwd /var/VMdisks/glibc-2 .14 [ghui@StuOS glibc-2.14]$ ls abilist config.h. in intl README.libm abi-tags config.log io resolv aclocal.m4 config. make . in libc-abis resource aout configure libidn rt argp configure. in libio Rules assert conform LICENSES scripts autom4te.cache CONFORMANCE locale setjmp bits COPYING localedata shadow BUGS COPYING.LIB login shlib-versions build cppflags-iterator.mk mach signal CANCEL-FCT-WAIVE crypt Makeconfig socket CANCEL-FILE-WAIVE csu Makefile soft-fp catgets ctype Makefile. in stdio-common ChangeLog debug Makerules stdlib ChangeLog.1 dirent malloc streams ChangeLog.10 dlfcn manual string ChangeLog.11 elf math sunrpc ChangeLog.12 extra-lib.mk misc sysdeps ChangeLog.13 extra-modules.mk NAMESPACE sysvipc ChangeLog.14 FAQ NEWS termios ChangeLog.15 FAQ. in nis test -skeleton.c ChangeLog.16 gmon NOTES time ChangeLog.17 gnulib nptl timezone ChangeLog.2 grp nptl_db tls. make .c ChangeLog.3 gshadow nscd version.h ChangeLog.4 hesiod nss Versions.def ChangeLog.5 hurd o-iterator.mk wcsmbs ChangeLog.6 iconv po wctype ChangeLog.7 iconvdata posix WUR-REPORT ChangeLog.8 include PROJECTS ChangeLog.9 inet pwd conf INSTALL README |
c.在glibc源码目录建立构建目录,并cd进入构建目录
1 2 | [ghui@StuOS glibc-2.14]$ mkdir build [ghui@StuOS glibc-2.14]$ cd build |
d.运行configure配置,make && sudo make install
1 2 3 4 | [ghui@StuOS build]$ .. /configure --prefix= /opt/glibc-2 .14 [ghui@StuOS build]$ make -j4 [ghui@StuOS build]$ sudo make install [ sudo ] password for ghui: |
4.临时修改环境变量
1 2 3 4 5 6 7 8 9 10 11 | [ghui@StuOS bin]$ export LD_LIBRARY_PATH= /opt/glibc-2 .14 /lib :$LD_LIBRARY_PATH [ghui@StuOS glibc-2.14]$ cd /var/VMdisks/cross/mingw32/bin/ [ghui@StuOS bin]$ . /qmake Usage: . /qmake [mode] [options] [files] QMake has two modes, one mode for generating project files based on some heuristics, and the other for generating makefiles. Normally you shouldn't need to specify a mode, as makefile generation is the default mode for qmake, but you may use this to test qmake on an existing project ... |
此时运行正常,问题解决。