熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

在Linux創建庫函數(2)

2013-11-13 16:09:47  來源: Oracle 

  摘要:和luster學習在Linux創建庫函數
   共享函數庫
  
    共享函數庫中的函數是在當一個可執行程序在啟動的時候被加載如果一個共享函數庫正常安裝所有的程序在重新運行的時候都可以自動加載最新的函數庫中的函數對於Linux系統還有更多的可以實現的功能
  
  o 升級了函數庫但是仍然允許程序使用老版本的函數庫 o 當執行某個特定程序的時候可以覆蓋某個特定的庫或者庫中指定的函數 o 可以在庫函數被使用的過程中修改這些函數庫
     一些約定
  
    如果你要編寫的共享函數庫支持所有有用的特性你在編寫的過程中必須遵循一系列約定你必須理解庫的不同的名字間的區別例如它的sonamereal name之間的區別和它們是如何相互作用的你同樣還要知道你應該把這些庫函數放在你文件系統的什麼位置等等下面我們具體看看這些問題
  
     共享庫的命名
  
    每個共享函數庫都有個特殊的名字稱作sonameSoname名字命名必須以lib作為前綴然後是函數庫的名字然後是so最後是版本號信息不過有個特例就是非常底層的C庫函數都不是以lib開頭這樣命名的
  
    每個共享函數庫都有一個真正的名字(real name它是包含真正庫函數代碼的文件真名有一個主版本號和一個發行版本號最後一個發行版本號是可選的可以沒有主版本號和發行版本號使你可以知道你到底是安裝了什麼版本的庫函數
  
  另
    外還有一個名字是編譯器編譯的時候需要的函數庫的名字這個名字就是簡單的soname名字而不包含任何版本號信息
  
    管理共享函數庫的關鍵是區分好這些名字當可執行程序需要在自己的程序中列出這些他們需要的共享庫函數的時候它只要用soname就可以了反過來當你要創建一個新的共享函數庫的時候你要指定一個特定的文件名其中包含很細節的版本信息當你安裝一個新版本的函數庫的時候你只要先將這些函數庫文件拷貝到一些特定的目錄中運行ldconfig這個實用就可以Ldconfig檢查已經存在的庫文件然後創建soname的符號鏈接到真正的函數庫同時設置/etc/ldsocache這個緩沖文件這個我們稍後再討論
  
    Ldconfig並不設置鏈接的名字通常的做法是在安裝過程中完成這個鏈接名字的建立一般來說這個符號鏈接就簡單的指向最新的soname或者最新版本的函數庫文件最好把這個符號鏈接指向soname因為通常當你升級你的庫函數的後你就可以自動使用新版本的函數庫勒
  
    我們來舉例看看
  
    /usr/lib/libreadlineso 是一個完全的完整的sonameldconfig可以設置一個符號鏈接到其他某個真正的函數庫文件例如是/usr/lib/libreadlineso同時還必須有一個鏈接名字例如/usr/lib/libreadlineso 就是一個符號鏈接指向/usr/lib/libreadlineso
  
    待續
  
    luster(cnhwang@ustcedu)
  
  
  

From:http://tw.wingwit.com/Article/program/Oracle/201311/17922.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.