glibc简单升级(2.12->2.14)

·        1. 升级原因

·        2. 检测系统glibc版本及动态库路径

o   2.1 检测 glibc 版本

o   2.2 检测动态库所在目录下的libc.so.6软连接的动态库

·        3 升级glibc版本

o   3.1 升级libc.so版本

o   3.2 升级glibcxx版本

·        4. 验证升级后的glibc是否满足引擎需要

1. 升级原因

由于目前在项目中使用的linux系统都为centos6.4原生系统,其自带的libc动态库版本为2.12版本。随着引擎功能的不断添加,很多引擎需要依赖高版本的libc动态库,所以我们在部署依赖高版本libc动态库的相关引擎时,需要将环境中的libc版本升级至2.14。

2. 检测系统glibc版本及动态库路径

2.1 检测 glibc 版本

(适用于没有进行过libc升级或者降级操作的机器)

# getconf -a |grep glibc -i (getconf -a获取全部系统信息|grep glibc -i 提取有glibc字符(-i 不分大小写)相关的行数)

出现如下所示,版本号为:2.12,则需要升级为2.14版本

# GNU_LIBC_VERSION                   glibc 2.12

2.2 检测动态库所在目录下的libc.so.6软连接的动态库

a、查看当前系统所设定的动态库路径

# env | grep LD_LIBRARY_PATH

如下所示,表示动态库路径(LD_LIBRARY_PATH)为 .:/lib64:/usr/local/engine:/usr/local/engine/mkl

b、在设定的动态库路径(LD_LIBRARY_PATH)下找寻第一个libc.so.6动态库

(注意有先后顺序,按照动态库的顺序,在上述示例中,首先找寻当前目录下" =. ";然后是/lib64目录下"./lib64 ";再然后是"/usr/local/engine "···)

# ll /lib64/libc.so.6

如下所示显示为libc-2.14.so,如果显示为 libc-2.12.so以下的版本,则需要升级为 libc-2.14.so

3 升级glibc版本

升级glibc,包括升级libc.so和升级glibcxx

3.1 升级libc.so版本

1. 修改LD_LIBRARY_PATH环境变量,将LD_LIBRARY_PATH的值改为  /lib64:/usr/local/engine:/usr/local/engine/mkl

# export LD_LIBRARY_PATH=/lib64:/usr/local/engine:/usr/local/engine/mkl

2.下载glibc2.14安装包 glibc-2.14.tar.gz,解压 tar-zxvf glibc-2.14.tar.gz ,

3. 在解压后的文件夹glibc-2.14下创建一个名为 build 的文件夹编译时使用

4.在build文件夹里,编译新版本glibc:

(1) 编译glibc

# ../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks
# make
# make install

注意:make 注意事项(编译时,需要动态库路径不包含当前路径),makeinstall 注意如果最后报错,可以忽略,但需要确定/lib64下已经安装了最新的glibc-2.14(执行命令:lllibc.so.6  查看)

(2)验证libc升级成功

 # getconf -a |grep glibc -i

如图所示:则表示libc升级成功

GNU_LIBC_VERSION                   glibc 2.14

3.2 升级glibcxx版本

1. 确认动态库路径首地址为/lib64

# env | grep LD_LIBRARY_PATH

如图所示,则表示动态库路径首地址为/lib64

2. 下载libstdc安装包 libstdc.so.rar, 解压到动态库路径首地址  /lib64 

# unrar  libstdc.so.rar /lib64

3. 恢复LD_LIBRARY_PATH的值,恢复为原来的  .:/lib64:/usr/local/engine:/usr/local/engine/mkl

# export LD_LIBRARY_PATH= .:/lib64:/usr/local/engine:/usr/local/engine/mkl

至此,glibc升级全部完成,下一节将验证升级后的glibc是否满足引擎需要

4. 验证升级后的glibc是否满足引擎需要

使用ldd命令检查用到的动态库,判断升级后是否满足动态库的需要;

# ldd -v /usr/local/engine/nlp/bin/libner_iFlyWS_Engine.so

完整动态库如图所示:

Expand source

[[email protected] bin]# ldd -v libner_iFlyWS_Engine.so
 
    linux-vdso.so.1 =>  (0x00007fffd27bf000)
 
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f990627f000)
 
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f990607a000)
 
    libboost_regex.so.1.42.0 => ./libboost_regex.so.1.42.0 (0x00007f9905da0000)
 
    libjsoncpp.so => ./libjsoncpp.so (0x00007f9905b5d000)
 
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f9905855000)
 
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f990563f000)
 
    libc.so.6 => /lib64/libc.so.6 (0x00007f99052b3000)
 
    /lib64/ld-linux-x86-64.so.2 (0x00007f9906781000)
 
    libm.so.6 => /lib64/libm.so.6 (0x00007f990502f000)
 
 Version information:
 
    ./libner_iFlyWS_Engine.so:
 
        libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
 
        libdl.so.2 (GLIBC_2.2.5) => /lib64/libdl.so.2
 
        libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
 
        libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4.14) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4.5) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (CXXABI_1.3) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4.15) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4) => /lib64/libstdc++.so.6
 
    /lib64/libpthread.so.0:
 
        ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
 
        ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
 
        ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
 
        libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
 
    /lib64/libdl.so.2:
 
        ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
 
        libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
 
    ./libboost_regex.so.1.42.0:
 
        libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
 
        libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
 
        libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.3.4) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4.11) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (CXXABI_1.3) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4.15) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4) => /lib64/libstdc++.so.6
 
    ./libjsoncpp.so:
 
        libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
 
        libpthread.so.0 (GLIBC_2.2.5) => /lib64/libpthread.so.0
 
        libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4.5) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (CXXABI_1.3) => /lib64/libstdc++.so.6
 
        libstdc++.so.6 (GLIBCXX_3.4) => /lib64/libstdc++.so.6
 
    /lib64/libstdc++.so.6:
 
        libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6
 
        ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
 
        libgcc_s.so.1 (GCC_4.2.0) => /lib64/libgcc_s.so.1
 
        libgcc_s.so.1 (GCC_3.3) => /lib64/libgcc_s.so.1
 
        libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
 
        libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
 
    /lib64/libgcc_s.so.1:
 
        libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
 
    /lib64/libc.so.6:
 
        ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
 
        ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
 
    /lib64/libm.so.6:
 
        libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
 
        libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6

如果没有依赖库,则如图所示

Expand source

./libner_iFlyWS_Engine.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14‘ not found (required by ./libner_iFlyWS_Engine.so)
 
./libner_iFlyWS_Engine.so: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15‘ not found (required by ./libner_iFlyWS_Engine.so)
 
    linux-vdso.so.1 =>  (0x00007fff34cf4000)
 
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb361d01000)
 
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fb361afc000)
 
    libboost_regex.so.1.42.0 => not found
 
    libjsoncpp.so => not found
 
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fb3617f5000)
 
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fb3615df000)
 
    libc.so.6 => /lib64/libc.so.6 (0x00007fb361253000)
 
    /lib64/ld-linux-x86-64.so.2 (0x00007fb362225000)
 
    libm.so.6 => /lib64/libm.so.6 (0x00007fb360fcf000)
时间: 2024-10-08 11:03:29

glibc简单升级(2.12->2.14)的相关文章

针对幽灵漏洞对glibc进行升级

前一段时间出现幽灵漏洞,虽然及时做了修复,即对glibc进行升级,但是没时间整理文档,现在简单整理一下,希望对大家有用. 对于内网服务器,没有办法进行连接公网,无法用 yum update glibc或rpm -Uvh glibc*,我的方法是根据自己服务器操作系统的版本,把glibc相关的包下载到本地,然后再上传到文件服务器,再进行升级. glibc 下载地址:http://pkgs.org/download/glibc 幽灵漏洞脚本(或下载附件): [[email protected] op

原创:goldengate从11.2升级到12.1.2

goldengate从11.2升级到12.1.2 1.停止抽取进程 GGSCI (001.oracle.drs.dc.com) 286> stop EXTSJ01 2. 停止投递和复制进程 等待投递进程传输完和复制进程加载完毕.当投递进程的Write Checkpoint #1的Sequence和RBA和复制进程的 Current CHECKPOINT的Sequence和RBA相同时表示已同步完毕 2.1检查投递进程: GGSCI (001.oracle.drs.dc.com) 202> in

LINUX块设备驱动<12/13/14/15>

第 12章 +---------------------------------------------------+ |                 写一个块设备驱动                   | +---------------------------------------------------+ | 作者:赵磊                                         | | email: [email protected]             

探索Oracle之数据库升级九 12.1.0.1 Update 12.1.0.2

探索Oracle之数据库升级九 12.1.0.1 Update 12.1.0.2 一.检查当前数据库版本及系统信息 [[email protected] ~]$ lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-ia32:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-ia32:p

Ubuntu 12.04, 14.04 安装 oracle java

第一步:如果系统中已安装了open java,需要清理, 反之 略过此过程 sudo apt-get purge openjdk* 第二步: 安装 sudo apt-get install software-properties-common 第三步: 添加信任的软件源: sudo add-apt-repository ppa:webupd8team/java 第四步,更新 sudo apt-get update 第五步: 安装java java6 sudo apt-get install or

12月14日中国域名商解析量17强:易名增幅最大

IDC评述网(idcps.com)12月18日报道:根据DailyChanges公布的实时数据显示,截止至2015年12月14日,国内域名商解析量17强排名顺序,与上期完全相同.阿里云(万网)增速稳定,环比净增32,958个,域名解析量升至4,301,472个,牢牢占据霸主之位.下面,IDC评述网将对相关数据进行具体分析. (图1)中国域名解析商(国际域名)解析量排行榜TOP17分布图 如图1所示,截止至2015年12月14日,在国内域名商解析量大战中,阿里云(万网)以400余万的域名解析量蝉联

2015年12月14日 星期一 日本为什么那么强大

body { font-family: Microsoft YaHei UI,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5; } html, body { } h1 { font-size:1.5em; font-weight:bold; } h2 { font-size:1.4em; font-weight:bo

CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root

catalog 0. 引言 1. Description 2. Effected Scope 3. Exploit Analysis 4. Principle Of Vulnerability 5. Patch Fix 0. 引言 新技术.高性能技术的不断发展,越来越提升了操作系统的能力,而近几年出现的虚拟化技术,包括overlayfs虚拟层叠文件系统技术,则为docker这样的虚拟化方案提供了越来越强大的技术支撑,但是也同时带来了很多的安全问题抛开传统的overflow溢出型漏洞不说,还有另一

glibc 编译安装( version `GLIBC_2.14' not found")

用了kali一段时间了,没想到有一天使用vi命令时候突然就出现“GLIBC_2.14 not found"错误.没法子,果断查资料. 我是在kali-3.18.0中编译的. glibc的下载地址:http://ftp.gnu.org/gnu/glibc/ 或者:http://www.gnu.org/software/libc/download.html 安装: 下载的glibc的源码解压到某个目录,并进入源码目录 建立构建目录,并cd进入构建目录: [[email protected] glib