centos下升级glibc

原文地址:http://blog.csdn.net/dodo_check/article/details/9341145

另外,本文是新建单独的目录来存放新的glibc,然后通过修改环境变量来实现.

可以再安装的时候直接使用/usr或者本来的默认路径来安装,则不需要修改环境变量.

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

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

  1. [ghui@StuOS bin]$ pwd  
  2. /var/VMdisks/cross/mingw32/bin  
  3. [ghui@StuOS bin]$ ls  
  4. lrelease     QtCore4.dll         QtNetwork4.dll      QtSql4.dll     QtXml4.dll  
  5. moc          QtDeclarative4.dll  QtOpenGL4.dll       QtSvg4.dll     rcc  
  6. phonon4.dll  QtGui4.dll          QtScript4.dll       QtTest4.dll    uic  
  7. qmake        QtMultimedia4.dll   QtScriptTools4.dll  QtWebKit4.dll  
  8. [ghui@StuOS bin]$ ./qmake   
  9. ./qmake: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./qmake)  


2.查看系统glibc支持的版本:
  1. [ghui@StuOS bin]$ strings /lib64/libc.so.6 |grep GLIBC_  
  2. GLIBC_2.2.5  
  3. GLIBC_2.2.6  
  4. GLIBC_2.3  
  5. GLIBC_2.3.2  
  6. GLIBC_2.3.3  
  7. GLIBC_2.3.4  
  8. GLIBC_2.4  
  9. GLIBC_2.5  
  10. GLIBC_2.6  
  11. GLIBC_2.7  
  12. GLIBC_2.8  
  13. GLIBC_2.9  
  14. GLIBC_2.10  
  15. GLIBC_2.11  
  16. GLIBC_2.12  
  17. GLIBC_PRIVATE  
  1. [ghui@StuOS bin]$ rpm -qa |grep glibc  
  2. glibc-static-2.12-1.80.el6_3.6.x86_64  
  3. glibc-headers-2.12-1.80.el6_3.6.x86_64  
  4. glibc-common-2.12-1.80.el6_3.6.x86_64  
  5. glibc-devel-2.12-1.80.el6_3.6.x86_64  
  6. glibc-static-2.12-1.80.el6_3.6.i686  
  7. glibc-devel-2.12-1.80.el6_3.6.i686  
  8. glibc-2.12-1.80.el6_3.6.i686  
  9. 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. [ghui@StuOS bin]$ cd /var/VMdisks/glibc-2.14/  
  2. [ghui@StuOS glibc-2.14]$ pwd  
  3. /var/VMdisks/glibc-2.14  
  4. [ghui@StuOS glibc-2.14]$ ls  
  5. abilist            config.h.in           intl           README.libm  
  6. abi-tags           config.log            io             resolv  
  7. aclocal.m4         config.make.in        libc-abis      resource  
  8. aout               configure             libidn         rt  
  9. argp               configure.in          libio          Rules  
  10. assert             conform               LICENSES       scripts  
  11. autom4te.cache     CONFORMANCE           locale         setjmp  
  12. bits               COPYING               localedata     shadow  
  13. BUGS               COPYING.LIB           login          shlib-versions  
  14. build              cppflags-iterator.mk  mach           signal  
  15. CANCEL-FCT-WAIVE   crypt                 Makeconfig     socket  
  16. CANCEL-FILE-WAIVE  csu                   Makefile       soft-fp  
  17. catgets            ctype                 Makefile.in    stdio-common  
  18. ChangeLog          debug                 Makerules      stdlib  
  19. ChangeLog.1        dirent                malloc         streams  
  20. ChangeLog.10       dlfcn                 manual         string  
  21. ChangeLog.11       elf                   math           sunrpc  
  22. ChangeLog.12       extra-lib.mk          misc           sysdeps  
  23. ChangeLog.13       extra-modules.mk      NAMESPACE      sysvipc  
  24. ChangeLog.14       FAQ                   NEWS           termios  
  25. ChangeLog.15       FAQ.in                nis            test-skeleton.c  
  26. ChangeLog.16       gmon                  NOTES          time  
  27. ChangeLog.17       gnulib                nptl           timezone  
  28. ChangeLog.2        grp                   nptl_db        tls.make.c  
  29. ChangeLog.3        gshadow               nscd           version.h  
  30. ChangeLog.4        hesiod                nss            Versions.def  
  31. ChangeLog.5        hurd                  o-iterator.mk  wcsmbs  
  32. ChangeLog.6        iconv                 po             wctype  
  33. ChangeLog.7        iconvdata             posix          WUR-REPORT  
  34. ChangeLog.8        include               PROJECTS  
  35. ChangeLog.9        inet                  pwd  
  36. conf               INSTALL               README  

      c.在glibc源码目录建立构建目录,并cd进入构建目录
  1. [ghui@StuOS glibc-2.14]$ mkdir build  
  1. [ghui@StuOS glibc-2.14]$ cd build  

    d.运行configure配置,make && sudo  make install
  1. [ghui@StuOS build]$ cd build & ../configure --prefix=/opt/glibc-2.14  
  2. [ghui@StuOS build]$ make -j4   
  3. [ghui@StuOS build]$ sudo make install  
  4. [sudo] password for ghui:   

4.临时修改环境变量
  1. [ghui@StuOS bin]$ export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH 
  2. 如果要永久改变环境变量,可以在/etc/profile文件中最后添加以下两行:
  3. LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
  4. export LD_LIBRARY_PATH
  5. 添加完成后保存文件并执行命令:source /etc/profile使修改生效.
  6. 修改后,可以通过命令:echo $LD_LIBRARY_PATH  查看修改是否成功,永久修改可能会导致系统出现问题,请谨慎
  1. [ghui@StuOS glibc-2.14]$ cd /var/VMdisks/cross/mingw32/bin/  

  1. [ghui@StuOS bin]$ ./qmake   
  2. Usage: ./qmake [mode] [options] [files]  
  3.   
  4. QMake has two modes, one mode for generating project files based on  
  5. some heuristics, and the other for generating makefiles. Normally you  
  6. shouldn't need to specify a mode, as makefile generation is the default  
  7. mode for qmake, but you may use this to test qmake on an existing project  
  8. ...  


此时运行正常,问题解决。


### 回答1: glibc-2.35是一个C标准库,它是Linux系统中最基本的系统库之一。在编译和运行程序时,可能会依赖于glibc-2.35库和其他一些相关的库。下面是一些常见的glibc-2.35依赖库: 1. libpthread.so.0:线程库,提供线程管理相关的函数。 2. libm.so.6:数学库,提供数学函数,如sin、cos、sqrt等。 3. libdl.so.2:动态链接库,提供动态链接相关的函数。 4. libcrypt.so.1:密码库,提供密码相关的函数,如加密、解密等。 5. librt.so.1:实时库,提供实时相关的函数。 6. libnsl.so.1:网络库,提供网络相关的函数。 7. libresolv.so.2:DNS库,提供DNS相关的函数。 这些库都是Linux系统中常见的系统库,它们通常都已经预装在系统中。如果你需要使用某个库,可以通过安装相应的开发包来获得。例如,在Debian/Ubuntu系统中,可以使用以下命令来安装libpthread库的开发包: ``` sudo apt-get update sudo apt-get install libpthread-stubs0-dev ``` 在CentOS/RHEL系统中安装: ``` sudo yum update sudo yum install glibc-devel ``` 这样就可以安装相应的开发包,并在编译和运行程序时使用它们。 ### 回答2: glibc-2.35是Linux系统中的一个重要软件库,提供了许多基本的系统函数和接口。它是一个底层库,许多其他程序依赖于它来运行。 glibc-2.35依赖的库主要有以下几个: 1. Linux内核:作为操作系统的核心,glibc-2.35需要与Linux内核紧密配合工作。 2. libgcc:是GCC(GNU编译器套件)的一部分,提供了一些编译时和运行时的支持库。glibc-2.35需要依赖libgcc来进行一些底层操作。 3. libpthread:是POSIX线程库的实现之一,提供对线程的支持。glibc-2.35中的线程相关函数需要依赖libpthread库。 4. libdl:是动态加载库,提供了运行时动态加载共享库的接口。glibc-2.35使用libdl来加载和调用共享库。 5. libm:是数学库,提供数学运算函数。glibc-2.35的一些数学函数需要依赖libm来完成数学计算。 除了以上列举的几个库外,glibc-2.35还可能依赖其他一些系统库,如librt(实时库,提供对实时操作系统特性的支持)、libresolv(解析域名的库)等,具体依赖的库可能因系统配置和环境而有所不同。 总之,glibc-2.35作为一个基础库,依赖于Linux内核和其他一些系统库来提供各种功能和接口,确保了系统的正常运行和其他程序的稳定性。 ### 回答3: glibc-2.35是GNU C库(Glibc)的一个特定版本。它是一个开源的C库,为Linux操作系统提供了基本的操作和功能接口。glibc-2.35是该库的一个更新版本,它引入了许多新的特性和改进。 glibc-2.35依赖的库包括: 1. Linux内核(kernel):glibc-2.35需要与Linux操作系统内核进行交互,以实现底层的系统调用和服务。 2. libgcc:glibc-2.35依赖于GNU编译器集合(GCC)的共享库,这些库提供了编译和链接C程序所需的基础功能。 3. zlib:glibc-2.35使用zlib库来提供数据压缩和解压缩的功能。这对于处理压缩数据流非常有用,例如在网络传输或文件压缩中。 4. libpthread:glibc-2.35使用libpthread库来支持多线程操作。这个库提供了创建、同步和管理线程的功能,以实现并发执行的能力。 5. libm:glibc-2.35依赖于数学库libm,它提供了常见的数学函数和运算,例如三角函数、指数函数、对数函数等。 6. libdl:glibc-2.35使用libdl库来支持动态加载共享库的功能。这对于运行时动态加载的程序非常重要,因为它允许程序根据需要加载额外的代码库。 以上是glibc-2.35 依赖的一些常见库,还有其他一些可能的依赖库取决于具体的配置和需求。这些依赖库提供了glibc-2.35所需的功能和支持,使其成为一个完整的操作系统开发和执行环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值