软件是对质量的不懈追求

linux库管理

 Linux下的库文件分为共享库和静态库两大类,它们两者的差别仅在程序执行时所需的代码是在运行时动态加载的,
  还是在编译时静态加载的。区分库类型最好的方法是看它们的文件后缀,通常共享库以.so(Shared Object的缩写)结尾,
  静态链接库通常以.a结尾(Archive的缩写)。在终端缺省情况下,共享库通常为绿色,而静态库为黑色。

库操作命令

  Linux库操作可以使用命令完成,目前常用的命令是ldd和ldconfig。

 1.ldd
  ldd是Library Dependency Display缩写,它的作用是显示一个可执行程序必须使用的共享库。

  $ ldd /usr/bin/mesg
  libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7eaf000)
  /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0xb7feb000)

 2.ldconfig
  库安装到系统以后,为了让动态链接库为系统所认识及共享,就需要运行ldconfig。ldconfig命令的用途,
  主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),
  进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表,
  ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。

 (1)命令格式
   ldconfig [选项] [libs]

 (2)主要选项
   -v或–verbose ldconfig将显示正在扫描的目录、搜索到的动态链接库,以及它所创建的连接的名字。

   -f CONF 指定动态链接库的配置文件为CONF,系统默认为/etc/ld.so.conf。

   -C CACHE 指定生成的缓存文件为CACHE,系统默认的是/etc/ld.so.cache,文件存放已排好序的可共享的动态链接库的列表。

   -p或–print-cache 让ldconfig打印出当前缓存文件所保存的所有共享库的名字。

   -r ROOT 改变应用程序的根目录为ROOT。

   -n ldconfig仅扫描命令行指定的目录,不扫描默认目录(/lib、/usr/lib),也不扫描配置文件/etc/ld.so.conf所列的目录。

  运行没有选项的ldconfig命令时,用于更新高速缓冲文件。这个命令主要用于高速缓冲DNS服务器(Caching DNS Server)。
  高速缓冲DNS服务器的原理是提供查询的历史记录,并且利用这些记录来提高查询的效率。

  当某个查询是第一次被发送到高速缓冲DNS服务器时,高速缓冲DNS服务器就将此查询的整个过程记录下来,
  在一定的时期内用它来回答所有相同的查询,从而减少整个DNS系统的负担并且提高查询速度。

库的升级

  Linux系统软件更新很快,新的核心几乎每几个星期就公布一次,其它软件的更新也是非常频繁。多数情况下,
  盲目跟随潮流的升级并不必要,如果确实需要新版本的特性时再升级。换句话说,不要为了升级而升级。
  Linux系统中多数软件都是用共享库来编译的,其中包含了在不同程序之间共享的公用子例程。

  在运行某个程序时,如果看到如下信息:“Incompatible library version.”则表明需要将该库升级到程序所需要的版本。
  库是向下兼容的,也就是说,用老版本库编译的程序可以在新安装的版本库上运行,反之则不行。

  Linux库函数的升级是一项重要的工作,往往与其它软件包的升级有一定关联作用,所以操作前一定要备份文件。
  下面看一下如何把Glibc 2.2.4.13升级至2.3.2版本,其过程如下:

  1.下载.gz压缩文件并解压

    在GUN C网站下载的四个.gz压缩文件,解压至一临时目录中:
    cd /usr/caolinux
    tar xzvf glibc-2.3.2.tar.gz
    cd glibc-2.3.2
    tar xzvf ../glibc-linuxthreads-2.3.2.tar.gz
    tar xzvf ../glibc-crypt-2.3.2.tar.gz
    tar xzvf ../glibc-localedata-2.3.2.tar.gz

  2.建立库函数的安装目录
    mkdir /usr/higlibc
    cd /usr/higlibc

  3.建立编译目录
    mkdir cao
    cd cao
    ./configure –enable-add-ons=linuxthreads,crypt,localedata -prefix=/usr/higlibc

  4.编译与安装
    make
    make check
    make install

  5.改变数据库的链接
    ln -s /usr/higlibc/lib/ld-linux.so.2 /lib/ld-linux.so.2

    然后,修改/etc/ld.so.conf,加入一行/usr/higlibc/lib,执行下面代码:
    ldconfig -v

    更新/etc/ld.so.cache的内容,列出每个库的版本号,扫描目录和所要创建及更新的链接。

  6.更改GCC设置
    cd /usr/lib/gcc-lib
    cp -r i386-redhat-linux higlibc

  7.更新符号链接
    cd /usr/higlibc/include
    ln -s /usr/src/linux/include/linux
    ln -s /usr/src/linux/include/asm
    ln -s /usr/X11R6/include/X11

  8.测试并完成

posted on 2009-12-18 09:25 BlakeSu 阅读(148) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: