一.靜態庫
靜態庫: 要被包含到源程式中的庫
1.優點執行速度快
2.缺點占用系統資源比較多
3.使用的場合對時間要求很高的場合
4.靜態庫的製作:
(1)把所有的源程式(.c檔案)製作成目標檔案(.o 檔案)
gcc -c mul.c -o mul.o
gcc -c sub.c -o sub.o
gcc -c add.c -o add.o
(2)使用工具將所有 .o 打包生成靜態庫檔案(靜態庫的字尾名是 .a )
ar rcs lib庫名.a mul.o sub.o add.o
(3)編譯的時候 gcc 庫包含的相關命令
-l 庫檔案所在的目錄
-l(l的小寫) 包含要新增到程式中的庫,後面跟庫名即可
-i(i的大寫) 指定標頭檔案所在路徑
gcc 2.c -l/home -lmylib -i…/
二.動態庫
(1)將要作為動態庫的檔案做成目標檔案檔案(.o)
注意和生成普通目標檔案的區別
gcc -c ***.c -o ***.o -fpic
(2)將目標檔案編譯成動態庫,字尾名是 .so
gcc -shared -o lib庫名 .so ***.o
(3)編譯的時候需要把動態庫加上
gcc src/main.c -l./lib -lmylib -o bin/a.out
(4)執行時候會找不到動態庫檔案
解決辦法:
1、臨時辦法,只在當前終端有效,終端重啟以後就沒用了
在終端輸入以下命令:
export ld_library_path=庫所在目錄的絕對路徑
2、修改終端的配置檔案~/.bashrc
vim ~/.bashrc
把 export ld_library_path=庫所在目錄的絕對路徑
新增到檔案的最後一行
重啟終端或者執行命令 source ~/.bashrc 使用配置檔案生效
3、將動態庫放到系統預設目錄下 ===>/usr/lib
4、配置檔案/etc/ld.so.conf
vim /etc/ld.so.conf
將庫檔案的絕對路徑新增到庫的最後一行
使配置檔案生效:ldconfig -v
檢視可執行使用了哪些動態庫的命令:ldd 可執行檔案
動態庫和靜態庫在同乙個目錄下,預設包含的是動態庫
C 靜態庫與動態庫
感覺比較形象,就摘過來了.這次分享的 宗旨是 讓大家學會建立與使用靜態庫 動態庫,知道靜態庫與動態庫的區別,知道使用的時候如何選擇。這裡不深入介紹靜態庫 動態庫的底層格式,記憶體布局等,有興趣的同學,推薦一本書 程式設計師的自我修養 鏈結 裝載與庫 庫是寫好的現有的,成熟的,可以復用的 現實中每個程...
C 靜態庫與動態庫
庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll 所謂靜態 動態是指鏈結。回顧一下,將乙個程...
c 靜態庫與動態庫
庫分為靜態庫,動態庫,在不同系統下字尾不同。2.1.1 在鏈結和執行階段都涉及庫的呼叫 訪問 h檔案 標頭檔案 是庫的介面。h檔案提供給庫的使用者,使用者通過.h來呼叫庫中的api。2.1.2 庫中包含的是函式的實現 一堆函式的實現 這些函式在編寫的時候同樣要包含1中的標頭檔案,然後生成庫。2.1....