軟件是對質量的不懈追求

          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 閱讀(159) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东乡族自治县| 西华县| 武宣县| 陕西省| 平乡县| 米易县| 多伦县| 金川县| 淮阳县| 江阴市| 岚皋县| 晋城| 剑阁县| 亚东县| 新闻| 扎赉特旗| 郯城县| 固始县| 慈利县| 屯门区| 深州市| 大丰市| 环江| 泾川县| 于田县| 松潘县| 牡丹江市| 建宁县| 孟村| 长葛市| 扎鲁特旗| 十堰市| 饶阳县| 溆浦县| 贡山| 奉新县| 镇安县| 桃园市| 衢州市| 道孚县| 渭南市|