• 升级glibc、gcc、zlib等


    前言:昨天公司先上线一个项目,需要用到Libreoffice开源办公套件,版本为最新版6.2的。这就难为我老人家,没办法,干吧。

    成功的路上总是不那么一番风顺,总会有点小瑕疵,才会让人铭记于心。

    先介绍环境:

    [root@xh-php-01t ~]# cat /etc/redhat-release 
    CentOS release 6.10 (Final)
    [root@xh-php-01t ~]# uname -r
    2.6.32-754.el6.x86_64
    [root@xh-php-01t ~]# gcc --version
    gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
    Copyright (C) 2010 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    第一个问题:

    [root@xh-php-01t ~]# libreoffice6.2 
    /opt/libreoffice6.2/program/oosplash: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/libreoffice6.2/program/oosplash)
    /opt/libreoffice6.2/program/oosplash: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/libreoffice6.2/program/libuno_sal.so.3)

    解决方法:

    查看libc.so.6模块支持的gblic版本,strings 命令简单来说就是打印出该模块的所有能打印的信息

    [root@test ~]# strings /lib64/libc.so.6|grep GLIB
    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

    可以发现centos6.10的glibc所有支持的版本

    查看glibc的版本

    [root@test ~]# rpm -aq|grep glibc
    glibc-common-2.12-1.212.el6.x86_64
    glibc-2.12-1.212.el6.x86_64

    升级glibc到2.15以上

    升级步骤:下载glibc2.15的rpm包(我们不准自己编译),上传到服务器,yum 安装

    [root@test ~]# ll glibc2.15.zip 
    -rw-r--r--. 1 root root 20975068 Apr 18  2019 glibc2.15.zip
    [root@test ~]# yum install unzip
    [root@test ~]# unzip glibc2.15.zip 
    Archive:  glibc2.15.zip
      inflating: glibc2.15/glibc-2.15-60.el6.x86_64.rpm  
      inflating: glibc2.15/glibc-common-2.15-60.el6.x86_64.rpm  
      inflating: glibc2.15/glibc-devel-2.15-60.el6.x86_64.rpm  
      inflating: glibc2.15/glibc-headers-2.15-60.el6.x86_64.rpm  
      inflating: glibc2.15/glibc-static-2.15-60.el6.x86_64.rpm  
      inflating: glibc2.15/glibc-utils-2.15-60.el6.x86_64.rpm  
    [root@test ~]# cd glibc2.15
    [root@test glibc2.15]# yum install ./*.rpm

    升级之后:第一个问题解决

    [root@test glibc2.15]# rpm -aq|grep glibc
    glibc-2.15-60.el6.x86_64
    glibc-headers-2.15-60.el6.x86_64
    glibc-static-2.15-60.el6.x86_64
    glibc-common-2.15-60.el6.x86_64
    glibc-devel-2.15-60.el6.x86_64
    glibc-utils-2.15-60.el6.x86_64
    [root@test glibc2.15]# strings /lib64/libc.so.6|grep GLIB 
    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

    第二个问题:

    [root@test glibc2.15]# libreoffice6.2                    
    /opt/libreoffice6.2/program/oosplash: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by /opt/libreoffice6.2/program/libuno_sal.so.3)

    解决方法:

    查看libstdc++.so.6模块支持的gcc版本,strings 命令简单来说就是打印出该模块的所有能打印的信息

    [root@test glibc2.15]# strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
    GLIBCXX_3.4
    GLIBCXX_3.4.1
    GLIBCXX_3.4.2
    GLIBCXX_3.4.3
    GLIBCXX_3.4.4
    GLIBCXX_3.4.5
    GLIBCXX_3.4.6
    GLIBCXX_3.4.7
    GLIBCXX_3.4.8
    GLIBCXX_3.4.9
    GLIBCXX_3.4.10
    GLIBCXX_3.4.11
    GLIBCXX_3.4.12
    GLIBCXX_3.4.13
    GLIBCXX_FORCE_NEW
    GLIBCXX_DEBUG_MESSAGE_LENGTH
    现在要做的就是找到libstdc++.so.6这个模块是谁提供的,我摸索出来了,你们就不用找了,安装gcc会自动依赖安装libstdc++,而这个模块就是libstdc++包提供的
    
    

    说明一点:libstdc++.so.6模块是libstdc++包提供的,但是它依赖gcc包

    当然包我已经下好了,后面会附上链接。

    [root@test ~]# ll gcc4.8.2.zip 
    -rw-r--r--. 1 root root 33789418 Apr 17  2019 gcc4.8.2.zip
    [root@test ~]# unzip gcc4.8.2.zip 
    Archive:  gcc4.8.2.zip
       creating: gcc4.8.2/
      inflating: gcc4.8.2/cpp-4.8.2-8.el6.x86_64.rpm  
      inflating: gcc4.8.2/gcc-4.8.2-8.el6.x86_64.rpm  
      inflating: gcc4.8.2/gcc-c++-4.8.2-8.el6.x86_64.rpm  
      inflating: gcc4.8.2/libgcc-4.8.2-8.el6.x86_64.rpm  
      inflating: gcc4.8.2/libgomp-4.8.2-8.el6.x86_64.rpm  
      inflating: gcc4.8.2/libmpc-0.8.3-0.3.svn855.el6.x86_64.rpm  
      inflating: gcc4.8.2/libstdc++-4.8.2-8.el6.x86_64.rpm  
      inflating: gcc4.8.2/libstdc++-devel-4.8.2-8.el6.x86_64.rpm  
      inflating: gcc4.8.2/libtool-2.4.2-21.el6.x86_64.rpm
    [root@test ~]# cd gcc4.8.2    
    [root@test gcc4.8.2]# yum install ./*.rpm

    [root@test gcc4.8.2]# gcc --version
    gcc (GCC) 4.8.2 20131212 (Red Hat 4.8.2-8)
    Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    第三个问题:

    [root@test gcc4.8.2]# libreoffice6.2                    
    /opt/libreoffice6.2/program/oosplash: /lib64/libz.so.1: version `ZLIB_1.2.3.4' not found (required by /opt/libreoffice6.2/program/oosplash)

     解决方法:centos6.10的zlib版本是1.2.3,这个软件需要的版本比他高,所以我们要升级zlib

    [root@test ~]# wget http://www.zlib.net/fossils/zlib-1.2.5.tar.gz
    [root@test ~]# ll zlib-1.2.5.tar.gz 
    -rw-r--r--. 1 root root 544640 Apr 19  2019 zlib-1.2.5.tar.gz
    [root@test ~]# tar xf zlib-1.2.5.tar.gz 
    [root@test ~]# cd zlib-1.2.5   
    [root@test zlib-1.2.5]# ./configure --prefix=/usr/local/zlib1.2.5
    [root@test zlib-1.2.5]# make && make install
    把新编译的模块加载到模块库中
    [root@test zlib-1.2.5]# echo /usr/local/zlib1.2.5/lib/ >>/etc/ld.so.conf
    [root@test zlib-1.2.5]# ldconfig -v 

    第四个问题:

    [root@test ~]# libreoffice6.2 --version
    /opt/libreoffice6.2/program/soffice.bin: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory

    解决方法:报错提示说libcairo.so.2没发现,但是/opt/libreoffice6.2/program/soffice.bin程序需要使用它,那我们来看看这个程序运行所需的依赖库还有那些,我们及时i补充它,这里用到ldd命令

    [root@test ~]# ldd /opt/libreoffice6.2/program/soffice.bin
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libdbus-1.so.3: no version information available (required by /opt/libreoffice6.2/program/libmergedlo.so)
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/libreoffice6.2/program/libnspr4.so)
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/libreoffice6.2/program/libcurl.so.4)
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/libreoffice6.2/program/libxslt.so.1)
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/libreoffice6.2/program/liblangtag-lo.so.1)
            linux-vdso.so.1 =>  (0x00007ffd39dba000)
            libmergedlo.so => /opt/libreoffice6.2/program/libmergedlo.so (0x00007f50f26ca000)
            libuno_sal.so.3 => /opt/libreoffice6.2/program/libuno_sal.so.3 (0x00007f50f2465000)
            libc.so.6 => /lib64/libc.so.6 (0x00007f50f20a4000)
            libgpgmepp.so.6 => /opt/libreoffice6.2/program/libgpgmepp.so.6 (0x00007f50f1e48000)
            libicuuc.so.63 => /opt/libreoffice6.2/program/libicuuc.so.63 (0x00007f50f1a7a000)
            libz.so.1 => /usr/local/zlib1.2.5/lib/libz.so.1 (0x00007f50f185e000)
            libplc4.so => /opt/libreoffice6.2/program/libplc4.so (0x00007f50f1659000)
            libnspr4.so => /opt/libreoffice6.2/program/libnspr4.so (0x00007f50f141b000)
            libnss3.so => /opt/libreoffice6.2/program/libnss3.so (0x00007f50f10f9000)
            libsmime3.so => /opt/libreoffice6.2/program/libsmime3.so (0x00007f50f0ed2000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f50f0ccd000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f50f0ab1000)
            libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007f50f0870000)
            libicui18n.so.63 => /opt/libreoffice6.2/program/libicui18n.so.63 (0x00007f50f03a2000)
            libcurl.so.4 => /opt/libreoffice6.2/program/libcurl.so.4 (0x00007f50f013c000)
            libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f50efdff000)
            libxml2.so.2 => /opt/libreoffice6.2/program/libxml2.so.2 (0x00007f50efa41000)
            libxslt.so.1 => /opt/libreoffice6.2/program/libxslt.so.1 (0x00007f50ef801000)
            librt.so.1 => /lib64/librt.so.1 (0x00007f50ef5f9000)
            liborcus-0.14.so.0 => /opt/libreoffice6.2/program/liborcus-0.14.so.0 (0x00007f50ef2b7000)
            liborcus-parser-0.14.so.0 => /opt/libreoffice6.2/program/liborcus-parser-0.14.so.0 (0x00007f50ef077000)
            libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007f50eed5d000)
            libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f50eeb10000)
            libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007f50ee7f9000)
            liblcms2.so.2 => /opt/libreoffice6.2/program/liblcms2.so.2 (0x00007f50ee5a0000)
            libcairo.so.2 => not found
            libcups.so.2 => not found
            libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f50ee369000)
            libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f50ee0cb000)
            libm.so.6 => /lib64/libm.so.6 (0x00007f50eddd2000)
            libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f50edbc0000)
            libSM.so.6 => not found
            libICE.so.6 => not found
            libuno_cppu.so.3 => /opt/libreoffice6.2/program/libuno_cppu.so.3 (0x00007f50ed984000)
            libuno_cppuhelpergcc3.so.3 => /opt/libreoffice6.2/program/libuno_cppuhelpergcc3.so.3 (0x00007f50ed697000)
            libi18nlangtag.so => /opt/libreoffice6.2/program/libi18nlangtag.so (0x00007f50ed478000)
            libjvmaccesslo.so => /opt/libreoffice6.2/program/libjvmaccesslo.so (0x00007f50ed270000)
            libjvmfwklo.so => /opt/libreoffice6.2/program/libjvmfwklo.so (0x00007f50ed039000)
            libuno_salhelpergcc3.so.3 => /opt/libreoffice6.2/program/libuno_salhelpergcc3.so.3 (0x00007f50ece29000)
            libxmlreaderlo.so => /opt/libreoffice6.2/program/libxmlreaderlo.so (0x00007f50ecc1d000)
            libepoxy.so => /opt/libreoffice6.2/program/libepoxy.so (0x00007f50ec8e8000)
            libclewlo.so => /opt/libreoffice6.2/program/libclewlo.so (0x00007f50ec6e2000)
            libclucene.so => /opt/libreoffice6.2/program/libclucene.so (0x00007f50ec2f1000)
            libpdfiumlo.so => /opt/libreoffice6.2/program/libpdfiumlo.so (0x00007f50ebc6d000)
            libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f50eb963000)
            libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f50eb74d000)
            /lib64/ld-linux-x86-64.so.2 (0x000055a6647be000)
            libgpgme.so.11 => /opt/libreoffice6.2/program/libgpgme.so.11 (0x00007f50eb506000)
            libassuan.so.0 => /opt/libreoffice6.2/program/libassuan.so.0 (0x00007f50eb2f3000)
            libicudata.so.63 => /opt/libreoffice6.2/program/libicudata.so.63 (0x00007f50e9731000)
            libnssutil3.so => /opt/libreoffice6.2/program/libnssutil3.so (0x00007f50e9501000)
            libplds4.so => /opt/libreoffice6.2/program/libplds4.so (0x00007f50e92fc000)
            libssl3.so => /opt/libreoffice6.2/program/libssl3.so (0x00007f50e90aa000)
            libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f50e8e85000)
            libgthread-2.0.so.0 => /lib64/libgthread-2.0.so.0 (0x00007f50e8c80000)
            libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007f50e8a7d000)
            libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f50e8863000)
            libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f50e8643000)
            libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f50e841b000)
            libreglo.so => /opt/libreoffice6.2/program/libreglo.so (0x00007f50e81ff000)
            libunoidllo.so => /opt/libreoffice6.2/program/libunoidllo.so (0x00007f50e7f97000)
            liblangtag-lo.so.1 => /opt/libreoffice6.2/program/liblangtag-lo.so.1 (0x00007f50e7d71000)
            libgpg-error-lo.so.0 => /opt/libreoffice6.2/program/libgpg-error-lo.so.0 (0x00007f50e7b5c000)
            libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f50e7958000)
            libstorelo.so => /opt/libreoffice6.2/program/libstorelo.so (0x00007f50e773d000)

    可以看出ldd可以列出动态可执行程序所依赖的模块文件,上面可以发现该程序还有四个依赖没有找到,后面肯定会报错的,一起看。

    [root@test ~]# yum install cairo 
    [root@test ~]# libreoffice6.2 --version
    /opt/libreoffice6.2/program/soffice.bin: error while loading shared libraries: libcups.so.2: cannot open shared object file: No such file or directory
    [root@test ~]# yum install cups
    [root@test ~]# libreoffice6.2 --version
    /opt/libreoffice6.2/program/soffice.bin: error while loading shared libraries: libSM.so.6: cannot open shared object file: No such file or directory
    [root@test ~]# yum install libSM
    [root@test ~]# libreoffice6.2 --version
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libdbus-1.so.3: no version information available (required by /opt/libreoffice6.2/program/libmergedlo.so)
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/libreoffice6.2/program/libnspr4.so)
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/libreoffice6.2/program/libcurl.so.4)
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/libreoffice6.2/program/libxslt.so.1)
    /opt/libreoffice6.2/program/soffice.bin: /lib64/libc.so.6: version `GLIBC_2.17' not found (required by /opt/libreoffice6.2/program/liblangtag-lo.so.1)

    从上面来看,基本是解决了,但是我们升级的glibc版本还是太低了,要升级到2.17才行,方法都是一样,就不再写了。下面附上用到的包的链接:

    链接:https://pan.baidu.com/s/16UAPUq21WDxk6Xuc_oy2fQ
    提取码:k3rv

  • 相关阅读:
    无线网破解软件|一键式破解无线网|BT17软件包下载[笔记本+软件就行]
    Boost环境配置及遇到的问题解决方案
    HDU 4255 A Famous Grid
    uva 10306
    系统学习Linux的11点建议
    linux shell except tcl login ssh Automatic interaction
    常用网址记录
    am335x Qt SocketCAN Demo hacking
    a demo for how to use QThread
    OK335xS CAN device register and deiver match hacking
  • 原文地址:https://www.cnblogs.com/chai-/p/10731076.html
Copyright © 2020-2023  润新知