linux學習-1簡析靜態庫與動態庫的區別與聯系

      網友投稿 1169 2022-05-30

      1簡介

      我們知道從源代碼到可執行程序的轉換需要經歷編譯、匯編以及鏈接,或者可以簡單的理解成2步,編譯和鏈接。通過編譯,可以將每個源文件生成一個目標文件(即.c/.cpp -> .o文件)

      2靜態庫與動態庫

      首先什么是庫文件呢?庫文件是就是一種可執行代碼的二進制格式,可以被載入到內存中執行,具體可以分為靜態庫文件以及動態庫文件,二者同時存在同名文件,優先調用動態庫文件。

      2.1靜態庫

      (1)命名方式:靜態庫即.a文件,一般命名為lib+庫名.a。

      (2)特點:由于靜態庫文件包含所有數據以及函數因此靜態庫文件比較大。正因如此,其可以脫離源文件執行,即刪除相關C文件之后仍可執行,實際上作用于目標文件(.o).

      (3)載入時刻:編譯的時候直接別嵌入到可執行文件中。

      (4)生成指令:可略有不同

      ar?-rc?libxxx.a?xxx.o

      2.2動態庫:

      (1)命名方式:動態庫即.so文件,一般命名為lib+庫名.so。

      (2)特點:動態庫相比靜態庫要小很多,但其依賴源文件,一旦刪除源文件將無法執行

      (3)載入時刻:可執行程序運行時才被載入內存。

      (4)生成指令

      gcc?-fPIC?-shared?xxx.c?-o?libxxx.so,其中-fPIC?指的是位置無關即載入時重定位

      (5)注意:調用時注意其路徑,一般在linux默認生成在usr/lib下

      3 gcc常用選項列表

      (1) -c :只編譯,不鏈接,生成目標文件“.o”。

      (2) -S :只編譯,不匯編,生成匯編代碼”.s”。

      (3) -E :只進行預編譯。

      (4) -o file:把輸出文件輸出到file里。

      (5) -o0 不進行優化處理、-o或-o1優化生成代碼

      (6) -shared 生成共享目標文件,通常構建動態庫

      (7) -g :在可執行程序中包含標準調試信息。

      (8) -v :打印出編譯器內部編譯各過程的命令行信息和編譯器的版本。

      (9) -I dir :在頭文件的搜索路徑列表中添加dir目錄

      (10)-L dir :在庫文件的搜索路徑列表中添加dir目錄

      (11)-static :連接靜態庫(靜態庫也可以用動態庫鏈接方式鏈接)

      linux學習-1簡析靜態庫與動態庫的區別與聯系

      (12)-llibrary :連接名為library的庫文件

      選項以及警告等更加詳細的內容參考https://blog.csdn.net/gatieme/article/details/21389603

      Linux 匯編語言

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:UCOS學習筆記——任務相關的API函數的使用
      下一篇:區塊鏈技術開發 建立商城系統的幾大優勢
      相關文章
      亚洲AV女人18毛片水真多| 精品亚洲456在线播放| 亚洲中文无码mv| 亚洲成人黄色在线| 久久精品亚洲综合专区| 亚洲成a人片在线观看日本| 三上悠亚亚洲一区高清| 国产亚洲av片在线观看18女人| 亚洲国产精品尤物yw在线| 国产亚洲蜜芽精品久久| 久久精品国产亚洲AV天海翼| 久久无码av亚洲精品色午夜| 日韩国产欧美亚洲v片| 亚洲成AV人影片在线观看| 日韩欧美亚洲国产精品字幕久久久| 亚洲精品无码久久久久久| 亚洲国产精品嫩草影院| 久久精品国产亚洲AV未满十八| 国产午夜亚洲精品不卡免下载| 色窝窝亚洲AV网在线观看| 亚洲AⅤ视频一区二区三区| 亚洲AV伊人久久青青草原| 亚洲中文字幕丝袜制服一区| 中国亚洲女人69内射少妇| 国产亚洲精品精华液| 久久亚洲春色中文字幕久久久| 亚洲国产成人综合| 亚洲欧美中文日韩视频| 无码一区二区三区亚洲人妻| 亚洲精品一级无码中文字幕| 亚洲中文字幕无码久久2017 | 久久99亚洲综合精品首页| 亚洲人成无码网站久久99热国产| 国产成人精品曰本亚洲79ren| 亚洲国产日韩在线视频| 亚洲A∨无码无在线观看| 亚洲国产日韩在线成人蜜芽| 亚洲中文字幕乱码AV波多JI| 国产成人亚洲午夜电影| 中文字幕亚洲电影| 亚洲电影免费在线观看|