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

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

先介绍环境:

[root@xh-php-01t ~]# cat /etc/redhat-release
CentOS release 6.10 (Final)
[root@xh-php-01t ~]# uname -r
2.6.-.el6.x86_64
[root@xh-php-01t ~]# gcc --version
gcc (GCC) 4.4. (Red Hat 4.4.-)
Copyright (C) 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.
/opt/libreoffice6./program/oosplash: /lib64/libc.so.: version `GLIBC_2.' not found (required by /opt/libreoffice6.2/program/oosplash)
/opt/libreoffice6./program/oosplash: /lib64/libc.so.: version `GLIBC_2.' 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..zip
-rw-r--r--. root root Apr glibc2..zip
[root@test ~]# yum install unzip
[root@test ~]# unzip glibc2..zip
Archive: glibc2..zip
inflating: glibc2./glibc-2.15-.el6.x86_64.rpm
inflating: glibc2./glibc-common-2.15-.el6.x86_64.rpm
inflating: glibc2./glibc-devel-2.15-.el6.x86_64.rpm
inflating: glibc2./glibc-headers-2.15-.el6.x86_64.rpm
inflating: glibc2./glibc-static-2.15-.el6.x86_64.rpm
inflating: glibc2./glibc-utils-2.15-.el6.x86_64.rpm
[root@test ~]# cd glibc2.
[root@test glibc2.]# yum install ./*.rpm

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

[root@test glibc2.]# rpm -aq|grep glibc
glibc-2.15-.el6.x86_64
glibc-headers-2.15-.el6.x86_64
glibc-static-2.15-.el6.x86_64
glibc-common-2.15-.el6.x86_64
glibc-devel-2.15-.el6.x86_64
glibc-utils-2.15-.el6.x86_64
[root@test glibc2.]# strings /lib64/libc.so.|grep GLIB
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_2.
GLIBC_PRIVATE

第二个问题:

[root@test glibc2.]# libreoffice6.
/opt/libreoffice6./program/oosplash: /usr/lib64/libstdc++.so.: 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.]# strings /usr/lib64/libstdc++.so.|grep GLIBCXX
GLIBCXX_3.
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--. root root Apr 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.-.el6.x86_64.rpm
inflating: gcc4.8.2/gcc-4.8.-.el6.x86_64.rpm
inflating: gcc4.8.2/gcc-c++-4.8.-.el6.x86_64.rpm
inflating: gcc4.8.2/libgcc-4.8.-.el6.x86_64.rpm
inflating: gcc4.8.2/libgomp-4.8.-.el6.x86_64.rpm
inflating: gcc4.8.2/libmpc-0.8.-0.3.svn855.el6.x86_64.rpm
inflating: gcc4.8.2/libstdc++-4.8.-.el6.x86_64.rpm
inflating: gcc4.8.2/libstdc++-devel-4.8.-.el6.x86_64.rpm
inflating: gcc4.8.2/libtool-2.4.-.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.
/opt/libreoffice6./program/oosplash: /lib64/libz.so.: version `ZLIB_1.2.3.' 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..tar.gz
-rw-r--r--. root root Apr zlib-1.2..tar.gz
[root@test ~]# tar xf zlib-1.2..tar.gz
[root@test ~]# cd zlib-1.2.
[root@test zlib-1.2.]# ./configure --prefix=/usr/local/zlib1.2.5
[root@test zlib-1.2.]# make && make install
把新编译的模块加载到模块库中
[root@test zlib-1.2.]# echo /usr/local/zlib1.2.5/lib/ >>/etc/ld.so.conf
[root@test zlib-1.2.]# ldconfig -v

第四个问题:

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

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

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

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

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

升级glibc、gcc、zlib等的更多相关文章

  1. Linux CentOS6升级glibc库过程

    CentOS6升级glibc库过程 hadoop无法加载native库,可能原因是 glibc库版本过低,需要升级. 第一:安装以下软件 yum -y install zlib zlib-devel ...

  2. <未测>源码升级安装glibc和rpm升级glibc

    源码升级安装glibc和rpm升级glibc http://jacklin9.spaces.live.com/blog/cns!A891B52E1182AFB2!346.entry http://bl ...

  3. CentOS 6.x 如何升级 glibc 2.17

    CentOS 6.x 如何升级 glibc 2.17 ldd --version rpm -qa | grep glibc #查看glibc的版本 strings /lib64/libc.so.6 | ...

  4. 【linux】之Centos6.x升级glibc

    因为Centos比较保守依赖的glibc最高版本是2.12 rpm -qa|grep glibc strings /lib64/libc.so. |grep GLIBC_ 但是经常我们安装一些源码包, ...

  5. debian 升级glibc

    原因 wheezy是2.13,编译android4.4 需要2.14的,报错如下: rebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8-linar ...

  6. 升级glibc的感慨,

    1. 直接升级 glibc是gnu发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服务 ...

  7. 解决libc.so.6: version `GLIBC_2.14' not found问题, 升级glibc,glibc-2.15

    0.以下在系统CentOS 6.3 x86_64上操作 1.试图运行程序,提示"libc.so.6: version `GLIBC_2.14' not found",原因是系统的g ...

  8. Linux升级glibc

    参考http://www.linuxidc.com/Linux/2015-04/116472.htm via 红孩儿你好 一.简介 glibc是gnu发布的libc库,即c运行库.glibc是linu ...

  9. 【原创】大叔经验分享(27)linux服务器升级glibc故障恢复

    redhat6系统默认安装的glibc-2.12,有的软件依赖的是glibc-2.14,这时需要升级glibc,下载安装 http://ftp.gnu.org/gnu/glibc/glibc-2.14 ...

随机推荐

  1. python实现简单动画——生命游戏

    生命游戏 生命游戏的宇宙是一个无限的,其中细胞的二维正交网格,每个细胞处于两种可能的状态之一,即*活着*或*死亡*(分别是*人口稠密*和*无人居住*).每个细胞与它的八个邻居相互作用,这八个邻居是水平 ...

  2. 渗透测试的理论部分3——ISSAF的详细描述

    ISSAF即信息系统安全评估框架(Information Systems Security Assessment Framework)是另外一种开放源代码的安全性测试和安全分析框架.为了解决安全评估工 ...

  3. python编程之变量和简单的数据结构

    一.变量 前面我们用python输出了“hello world!” 这次我们在前面加入一行,定义一个变量,然后修改第二行. 添加变量导致Python解释器需要做更多工作.处理第1行代码时,它将文本“H ...

  4. redis操作(String,Hash,List,Set,其他操作)

    一.String操作 String操作,redis中的String在在内存中按照一个name对应一个value来存储.如图: set(name,value,ex=None,px=None,nx=Fal ...

  5. <笔记>TP5的save方法返回值

    用save方法来更新数据时,若更新前后数据没有改变则返回0,更新成功返回影响行数,更新失败返回false 若想要数据没改变时提示修改成功,则需要严格判断 if(结果!==false){提示成功}而不是 ...

  6. hightopo自己用开源的方案重构一遍

    经过一年多的学习吧前面路上的坑基本算踩过一遍了 所以下面计划吧hightopo网站上的demo用自己的方式重新写一遍

  7. Sqlalchemy python经典第三方orm

    Ⅰ. 安装 pip install sqlalchemy Ⅱ. 起步链接 import time import threading import sqlalchemy from sqlalchemy ...

  8. Delphi XE7试用记录2

    Delphi XE7试用记录2 万一博客中介绍了不少Delphi7以后的新功能测试,想跟着测试一下.每次测试建立一个工程,在窗体上放几个按钮,测试几个相关的功能,这样虽然简单明了,但日后查阅起来不方便 ...

  9. appium+python自动化脚本

    用pycharm,首先得把appium导入,操作如下(否则,运行程序后会报错,没有module appium) Settings->Project Interpreter,双击pip,搜索app ...

  10. Eigen3安装及注意

    执行命令: sudo apt-get install libeigen3-dev 安装后执行以下命令 运行命令: sudo cp -r /usr/include/eigen3/Eigen /usr/i ...