亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

抚宁县| 黄大仙区| 揭东县| 丰台区| 墨脱县| 三都| 峨边| 梧州市| 孟州市| 丽水市| 绥芬河市| 宣武区| 内乡县| 司法| 安庆市| 扶风县| 连云港市| 乐至县| 满洲里市| 枝江市| 嘉黎县| 平潭县| 涪陵区| 梁平县| 习水县| 施甸县| 井研县| 正阳县| 扬州市| 都昌县| 库车县| 望谟县| 抚远县| 读书| 工布江达县| 丁青县| 平原县| 广灵县| 林芝县| 芦溪县| 罗江县|