久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    動態庫與靜態庫的原理介紹

     春暉寸草 2009-12-28
    說明:
           在UNIX 的應用開發中,靜態庫和動態庫都是我們經常用到的技術,有必要對這兩個概念及其原理做一些介紹。
    靜態庫
           靜態庫是一些目標文件的集合,通常為后綴為.o 的文件,通過ar 工具打包而成,命名格式為libxxx.a ,其中xxx 為給定的靜態庫文件名,如libm.a ,為數學函數庫,用戶也可以命名自己的庫。在創建可執行程序的過程中,靜態庫同時被鏈接到程序代碼,被主程序調用的函數目標文件連同主程序組合成單一的可執行程序。靜態庫只在程序鏈接時起作用,最終的執行程序脫離靜態庫運行。

    動態庫
           按照其英文(shared library )也可理解為共享庫,動態庫的后綴一般為.so ,通過編譯器生成,在不同的平臺有不同的生成方法,但是在UNIX 平臺中,其使用及工作原理是一致的。使用動態庫創建執行程序,分為兩個階段:鏈接階段,即通過ld 創建執行程序時,鏈接編輯器會在指定的動態庫中搜索、解析被主程序調用的函數及其他變量等,如引用被找到,則在執行程序的XCOFF 頭結構的loader 區域,建立包含引用的動態庫的影像,反之,如在指定的動態庫中沒有找到此引用的定義,編譯器會給出類似未定義的符號引用錯誤。這不同于靜態庫,包含引用的目標文件并不和執行程序鏈接在一起。另一階段為運行階段,即執行程序運行時。程序運行時,系統相關模塊將讀取定義執行程序的XCOFF 頭結構中的信息,查找并加載相關的動態庫,假設,所有被應用的動態庫都被定位且加載后,程序將開始運行。反之,如果,被應用的動態庫丟失,則程序報錯。這一個過程我們常稱之為動態鏈接。可以通過一個簡單的例子來分析靜態庫與動態庫的不同,假定執行程序名為a.out ,分別通過
    靜態庫和動態庫編譯、鏈接,如下圖所示:
    上圖,明顯的顯示出對同一主程序代碼,使用靜態庫和動態庫,創建的執行程序的不同,尤其是程序大小。對使用動態庫的程序,程序啟動后,相關的動態庫的目標代碼加載到系統內存,而且可以被其他使用此動態庫的執行程序共享使用。這樣,在給定的時間,統一動態庫的代碼在系統中只有一份拷貝,所有使用此動態庫的程序可共享這一拷貝。動態鏈接的使用可以節省系統內存的使用,對一些比較復雜的應用作用比較明顯,另外,執行程序代碼的減小,也可以節省磁盤空間。另外,我們還應當注意,AIX 不同于其他UNIX 的一點是動態庫(Shared Library )和動態對象(Shared Object ),這兩個概念不能完全互換,動態對象只是單個的目標文件,但在其XCOFF 頭結構中有一特殊標示位SREShared REusable ),后綴為.o 。動態庫則是目標文件的集合,包含動態對象、普通目標文件,其后綴為.so
    以上我們只是介紹靜態庫和動態庫的基本工作原理。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 日本久久99成人网站| 亚洲人成网网址在线看| 日韩精品无码人成视频手机| 在线 欧美 中文 亚洲 精品| 人妻影音先锋啪啪AV资源| 国产精品VA在线观看丝瓜影院| 丰满少妇被猛男猛烈进入久久| 中文字幕av无码不卡| 无码国内精品久久人妻| 成年男女免费视频网站| 亚洲乱码在线卡一卡二卡新区| 亚洲最大的熟女水蜜桃AV网站| 99福利一区二区视频| h无码精品3d动漫在线观看| 少妇粗大进出白浆嘿嘿视频| 欧美人与禽2O2O性论交| 国产AV无码专区亚洲AV潘金链| 日本成熟少妇激情视频免费看| 国产农村妇女高潮大叫| 国产成人毛片无码视频软件| 国产精品久久久久久久网| 成人免费乱码大片a毛片| 色婷婷亚洲精品综合影院| 性一交一乱一伦一| 中文字幕日韩有码一区| 国产乱理伦片在线观看夜| 国产高清自产拍AV在线| 亚洲国产AV无码精品无广告| 天天做日日做天天添天天欢公交车| 国产日韩综合av在线| 成在线人永久免费视频播放| 国产成人手机高清在线观看网站 | 成人网站网址导航| 日本高清一区免费中文视频| 国产精品亚洲LV粉色| 奇米777四色成人影视| 无码精品人妻一区二区三区中| 亚洲性无码AV在线欣赏网| 国内精品一区二区三区| 亚洲人成电影网站 久久影视| 精品无码一区在线观看|