前言:昨天公司先上线一个项目,需要用到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. 把mysql中的记录封装成集合

    package cn.hu3.com;import cn.hu1.com.JdbcUtils;import java.sql.Connection;import java.sql.PreparedSt ...

  3. go mysql insert变量到数据库

    result, err1 := db.Exec("insert ignore into dish(name,calorie,confidence) values('"+str1+& ...

  4. python PyInstaller 库

    https://www.cnblogs.com/gopythoner/p/6337543.html https://www.cnblogs.com/duan-qs/p/6548875.html htt ...

  5. shell搭建CentOS_7基础环境

    #!/bin/bash#Auth:Darius#CentOS_7配置实验环境eno=`ifconfig|awk '{print $1}'|head -1|awk -F ":" '{ ...

  6. C#如何以管理员身份运行程序 转

    在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况 ...

  7. POI对Excel的操作

    1. 先导包 commons-io-2.6.jar包,用于对文件的操作. 下载地址:http://commons.apache.org/proper/commons-io/download_io.cg ...

  8. 记一下vue.js事件的修饰等问题

    在事件处理程序中调用 event.preventDefault() 或 event.stopPropagation() 是非常常见的需求.尽管我们可以在 methods 中轻松实现这点,但更好的方式是 ...

  9. 急速安装lnmp 编译版本-wiki-shell脚本实现一键部署

    shell脚本lnmp.sh 环境:centos 6.5 .64位 #!/bin/bash yum install -y nano vim wget wget http://www.atomicorp ...

  10. 26.HashCode

      在前面三篇博文中讲解了(HashMap.HashSet.HashTable),在其中不断地讲解他们的put和get方法,在这两个方法中计算key的hashCode应该是最重要也是最精华的部分,所以 ...