国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

gcc編譯動態庫與靜態庫

2019-11-08 03:00:52
字體:
來源:轉載
供稿:網友

我們知道庫有靜態庫和動態庫2種。這是因為鏈接時間不同而造成的。如下為它們的差別: 靜態庫是在鏈接階段被鏈接的,鏈接靜態庫就像是我們所用的復制粘貼,它操作的對象是目標代碼,源碼不會發生改變由于靜態庫被鏈接后庫就直接嵌入可執行文件中了,所以生成的可執行文件就不受庫的影響了,即使在別的電腦上運行,程序依然可以成功運行。

有別于靜態庫,動態庫的鏈接是在程序執行的時候被鏈接的。所以,即使程序編譯完,庫仍須保留在系統上,以供程序運行時調用。

———————————————————- 我們在這里比較這2種庫的有利之處和不利之處: 就像復制粘貼會帶來文本的冗余一樣,。靜態庫被鏈接后會帶來系統空間的浪費。一個文件你或許覺得不會浪費,但n個文件鏈接同一個庫,那么該庫也會被覆蓋n份。 動態庫則不會,它只是程序需要的時候就去庫里面找。 但是同時這樣的話動態編譯運行起來來比靜態編譯慢,不過由于時代的進步,這種差別已經不會有很大的影響。故而現在代碼編譯默認為靜態編譯。當然你也可以用-static參數指定鏈接靜態庫。

——————————————————–- 自己編寫一個簡單的動態庫和靜態庫: 一.將test.c和test1.c編譯成靜態鏈接庫.a 1 把test.c和test2.c分別編譯為test.o和test2.o. 這里寫圖片描述 2.生成libtest.a 這里寫圖片描述 3。為了我們使用靜態文件能找到它,把它放在/usr/lib中 這里寫圖片描述

現在就可以使用我們的靜態庫文件了。 調用方式為gcc test3 -o test3.c -ltest

二.將test.c和test2.c組合成動態鏈接庫test.so 與上面方法類似,調用方法改為: gcc test3 -o test3.c test.so

當然,如果你不想把生成的文件或無權限放在/usr/lib中,你可以把當前路徑放在環境變量LD_LIBRARY_PATH中。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 罗山县| 吴江市| 连平县| 乌恰县| 文成县| 克拉玛依市| 昭苏县| 普陀区| 繁昌县| 温州市| 鹤壁市| 乐业县| 德令哈市| 方正县| 张家港市| 西峡县| 舞阳县| 习水县| 乡宁县| 临沂市| 昌宁县| 濮阳县| 扎赉特旗| 柳河县| 堆龙德庆县| 改则县| 定安县| 开远市| 陵水| 随州市| 太康县| 延边| 公主岭市| 佛坪县| 沧州市| 金山区| 鄯善县| 吉木萨尔县| 宜宾县| 巴青县| 筠连县|