庫是一種可執行的二進制文件,是編譯好的代碼。使用庫可以提高開發效率。在 Linux 下有靜態庫和動態庫。
靜態庫在程序編譯的時候會被鏈接到目標代碼里面。所以程序在運行的時候不再需要靜態庫了。因此編譯出來的體積就比較大。以 lib 開頭,以.a 結尾。
動態庫(動態庫也叫共享庫)在程序編譯的時候不會被鏈接到目標代碼里面,而是在程序運行的時候被載入的。所以程序在運行的時候需要動態庫了。因此編譯出來的體積就比較小。以 lib 開頭,以.so 結尾。
靜態庫的制作步驟:
編寫或準備庫的源代碼
將源碼.c 文件編譯生成.o 文件
使用 ar 命令創建靜態庫
測試庫文件
動態庫制作步驟:
編寫或準備庫的源代碼
將源碼.c 文件編譯生成.o 文件
使用 gcc 命令創建動態庫
測試庫文件
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
Linux
+關注
關注
87文章
11479瀏覽量
213026 -
靜態庫
+關注
關注
0文章
21瀏覽量
7593
發布評論請先 登錄
相關推薦
熱點推薦
Linux下動態庫和靜態庫的制作及使用
一看都清楚明了。(2)ldd命令看動態庫,如果目標程序沒有鏈接動態庫,則打印“not a dynamic executable” (不是動態
發表于 11-18 17:05
應用程序所依賴的動態庫和靜態庫沒有調試信息的原因
的原因可能有這么幾個:應用程序在編譯時沒有指定-g選項,導致可執行程序沒有調試信息。應用程序所依賴的動態庫和靜態庫沒有調試信息。應用程序的運行時環境沒有調試信息,比如libc等。嵌入式
發表于 11-05 06:41
靜態鏈接和靜態庫
所謂靜態鏈接,就是把庫實現的代碼整合到最終的二進制文件中,這樣的二進制文件會比較大,因為里面既包含了自己寫的代碼,又包含了調用的庫的代碼。
評論