解决libc.so.6: version `GLIBC_2.14' not found问题

0.以下在系统CentOS 6.3 x86_64上操作

1.试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系统的glibc版本太低,软件编译时使用了较高版本的glibc引起的:

    [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支持的版本:
    [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/

    [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进入构建目录

    [ghui@StuOS glibc-2.14]$ mkdir build  

    [ghui@StuOS glibc-2.14]$ cd build  

    d.运行configure配置,make && sudo  make install

    [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.临时修改环境变量

    [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