91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux中動態庫和靜態庫的區別有哪些

發布時間:2021-11-23 11:33:24 來源:億速云 閱讀:169 作者:小新 欄目:建站服務器

這篇文章將為大家詳細講解有關linux中動態庫和靜態庫的區別有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

區別:1、靜態庫在程序編譯時會被連接到目標代碼中,程序運行時將不再需要該靜態庫;動態庫在程序編譯時并不會被連接到目標代碼中,而是在程序運行時才被載入,因此在程序運行時還需要動態庫存在。2、動態庫產生的文件比較小,靜態庫產生的文件比較大。

本教程操作環境:CentOS 6系統、Dell G3電腦。

linux中動態庫和靜態庫的相同點和區別

相同點:

無論靜態庫,還是動態庫,都是由.o文件創建的。因此,我們必須將源程序通過gcc先編譯成.o文件;

區別:

1、代碼載入時間不同

  • 靜態庫在程序編譯時會被連接到目標代碼中,程序運行時將不再需要該靜態庫;

  • 動態庫在程序編譯時并不會被連接到目標代碼中,而是在程序運行時才被載入,因此在程序運行時還需要動態庫存在

2、編譯規則不同

  • 動態庫編譯

動態類庫的名字一般是libxxx.so,動態函數庫在編譯的時候 并沒有被編譯進目標代碼中,你的程序執行到相關函數時才調用該函數庫里的相應函數,因此動態函數庫所產生的可執行文件比較小;

動態庫編譯時:最主要的是GCC命令行的一個選項, -shared 該選項指定生成動態連接庫, 例如:

g++ -shared -o libd1.so d1.o    /*根據中間目標文件d1.o創建動態庫文件d1.so*/

g++ -shared -o libd2.so d2.o    /*根據中間目標文件d2.o創建動態庫文件d2.so*/

  • 靜態庫編譯

類庫的名字一般是libxxx.a;利用靜態函數庫編譯成的文件比較大,因為整個 函數庫的所有數據都會被整合進目標代碼中,他的優點就顯而易見了,即編譯后的執行程序不需要外部的函數庫支持,因為所有使用的函數都已經被編譯進去了。當然這也會成為他的缺點,因為如果靜態函數庫改變了,那么你的程序必須重新編譯。

UNIX中,使用ar命令創建或者操作靜態庫

ar     archivefile objfile

archivefile:archivefile是靜態庫的名稱

objfile:objfile是已.o為擴展名的中間目標文件名,可以多個并列;

例如:

g++ -o hello.o -c hello.cpp
ar cqs libHello.a hello.o

關于“linux中動態庫和靜態庫的區別有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太原市| 麟游县| 屯门区| 双辽市| 岱山县| 晋州市| 乃东县| 当涂县| 四子王旗| 昌吉市| 安康市| 汶上县| 张家川| 武威市| 合江县| 新竹县| 无为县| 文安县| 平果县| 云安县| 蓬溪县| 澄城县| 牟定县| 阿坝| 朝阳市| 周口市| 宁远县| 沙洋县| 舒城县| 阳高县| 临洮县| 蒙山县| 罗山县| 海伦市| 大连市| 延寿县| 镇坪县| 崇仁县| 安福县| 措美县| 吴桥县|