xml地图|网站地图|网站标签 [设为首页] [加入收藏]
来自 IT之家 2019-11-10 08:35 的文章
当前位置: 新濠国际登录平台 > IT之家 > 正文

2、不能在glibc当前目录下运行configure,php使用了

启动php 提示"libc.so.6: version `GLIBC_2.14' not found",原因可能是glibc版本太低,php使用了较高的glibc版本引起的

 

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)  

    [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. [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  

    [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

  18. [ghui@StuOS bin]$ rpm -qa |grep glibc  

  19. glibc-static-2.12-1.80.el6_3.6.x86_64  
  20. glibc-headers-2.12-1.80.el6_3.6.x86_64  
  21. glibc-common-2.12-1.80.el6_3.6.x86_64  
  22. glibc-devel-2.12-1.80.el6_3.6.x86_64  
  23. glibc-static-2.12-1.80.el6_3.6.i686  
  24. glibc-devel-2.12-1.80.el6_3.6.i686  
  25. glibc-2.12-1.80.el6_3.6.i686  
  26. glibc-2.12-1.80.el6_3.6.x86_64  

    [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. 到下载最新版本,我这里下载了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  

    [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. [ghui@StuOS glibc-2.14]$ mkdir build  

    [ghui@StuOS glibc-2.14]$ mkdir build

  2. [ghui@StuOS glibc-2.14]$ cd build  

    [ghui@StuOS glibc-2.14]$ cd build

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

  1. [ghui@StuOS 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:   

    [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. [ghui@StuOS bin]$ export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH  

    [ghui@StuOS bin]$ export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH

  2. [ghui@StuOS glibc-2.14]$ cd /var/VMdisks/cross/mingw32/bin/  

    [ghui@StuOS glibc-2.14]$ cd /var/VMdisks/cross/mingw32/bin/

 

5. 在 ~/.bashrc 或者 ~/.bash_profile 中加入 export 语句,前者在每次登陆和每次打开 shell 都读取一次,后者只在登陆时读取一次。我的习惯是加到 ~/.bashrc 中,在该文件的未尾,可采用如下语句来使设置生效:

 LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
 LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
 export LD_LIBRARY_PATH

修改完后,记得关掉当前终端并重新打开一个新的终端,从而使上面的配置生效。

  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  

From:

 

编译升级glibc, 易引起内核进不去,不能轻易升级:

  几个相关库强制做软件链接

 

另外,centos7.0支持到glibc-2.17.

linux上装最新版本chrome, android studio都需要至少安装glibc-2.15

 

 

编译安装glibc几个方案: 
1.下载glibc

wget  http://ftp.gnu.org/gnu/glibc/glibc-2.3.2.tar.gz

2.下载glibc-linuxthreads

wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.2.tar.gz

3.解压

tar -zxvf glibc-2.3.2.tar.gz
cd glibc-2.3.2
tar -zxvf ../glibc-linuxthreads-2.3.2.tar.gz
cd ..
./glibc-2.3.2/configure --prefix=/usr --disable-profile --enable-add-ons --libexecdir=/usr/lib --with-headers=/usr/include
make
make install

注意点:
1、要将glibc-linuxthreads解压到glibc目录下。
2、不能在glibc当前目录下运行configure

源码升级安装glibc和rpm升级glibc

下载glibc
wget  

下载glibc-linuxthreads
wget

 

解压
tar -zxvf glibc-2.7.tar.gz
mkdir glibc-build
cd glibc-2.7
tar -zxvf ../glibc-linuxthreads-2.7.tar.gz
cd ..
export CFLAGS="-g -O2 -march=i486"
cd glibc-build
../glibc-2.7/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks

#make
#make install

 

安装编译过程中需要注意三点:
1、要将glibc-linuxthreads解压到glibc目录下。
2、不能在glibc当前目录下运行configure。
3、加上优化开关,export CFLAGS="-g -O2 -march=i486",否则会出现错误
'#error "glibc cannot be compiled without optimization"'

 
###################################################################################################################################################
#########################    rpm 升级glibc2.7    ###########################################################################################
###################################################################################################################################################

因公司合作研发的游戏项目 德州扑克 要求,

Linux需要升级 glibc库要2.7以上,所以就尝试了下升级glibc。

由于找不到CentOS5的 glibc2.7 ,就在网上找到了fedora的rpm包来替代,试过暂时是没发现什么问题。以下是步骤。

这里下载相应的rpm包

由于我们目前linux都是64位系统,所以我下载4个x64文件:
glibc-common-2.7-2.x86_64.rpm
glibc-headers-2.7-2.x86_64.rpm
glibc-devel-2.7-2.x86_64.rpm
glibc-2.7-2.x86_64.rpm       

然后升级的命令为:
rpm -Uvh --aid --nodeps glibc-common-2.7-2.x86_新濠国际登录平台,64.rpm
rpm -Uvh --aid --nodeps glibc-headers-2.7-2.x86_64.rpm
rpm -Uvh --aid --nodeps glibc-devel-2.7-2.x86_64.rpm
rpm -Uvh --aid --nodeps glibc-2.7-2.x86_64.rpm

直接强制更新升级。

升级后好像glibc2.7自动生效了。

编译一个程序测试下是否使用了64位的动态库。

#vi hello.c

#include
int main(void)
{
              printf("Hello World!n");
}

保存退出,然后执行
gcc -o test hello.c
chmod +x test
./test

运行成功!

执行
file test
查看有看到x64,表示使用 64位的动态库。

网上有些地方加优化开关 -O2  时(大写字母O),写的是 -02 (数字零),所以拷贝过来仍然出现3中的错误,所以请注意。

安装完后,可以查看ls -l /lib/libc.so.6已升级

lrwxrwxrwx 1 root root 11 Nov 12 09:24 /lib/libc.so.6 -> libc-2.7.so

测试:
32位:
vim hello.c
 #include

 main()
 {
     printf("hello world!n");
 }

保存退出,然后执行
gcc -o test hello.c
chmod +x test
./test

运行成功!

执行
file test

64位:
#vi hello.c

#include
int main(void)
{
              printf("Hello World!n");
}

保存退出,然后执行
gcc -o test hello.c
chmod +x test
./test

运行成功!

执行
file test
查看有看到x64,表示使用 64位的动态库。

1,首先查看系统glibc的版本

$ 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 

$ 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 

2,可以看到最高的版本是会2.12,所以考虑编译解决这个问题,下载所需要升级的版本

cd  /tools

wget     (需要什么版本都可以)

本文由新濠国际登录平台发布于IT之家,转载请注明出处:2、不能在glibc当前目录下运行configure,php使用了

关键词: