国产探花免费观看_亚洲丰满少妇自慰呻吟_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中。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 澄城县| 卢氏县| 六枝特区| 称多县| 饶河县| 额敏县| 澳门| 射洪县| 香河县| 迭部县| 故城县| 靖宇县| 韶山市| 英德市| 青神县| 罗江县| 布拖县| 南充市| 鄂托克旗| 赫章县| 广昌县| 如东县| 水城县| 浑源县| 博兴县| 西吉县| 霸州市| 永靖县| 开鲁县| 含山县| 嘉善县| 马鞍山市| 大余县| 霞浦县| 泽州县| 社旗县| 麻江县| 拉萨市| 富川| 留坝县| 灵台县|