C 動態庫與靜態庫

2021-10-18 21:18:15 字數 1224 閱讀 2096

庫: 二進位制**的封裝

1.能夠把自己的**公開給別人使用,但是不提供原始碼

動態庫: .dll(dynamic link library) .so

執行的時候載入

生成動態庫:

1.gcc -shared -fpic -o libwtf.so wtf.c ***.c

·-shared: 動態庫

· wtf.c:源程式

· lib***.so: 生成檔案庫的名字

2.把庫和標頭檔案給需要的人

3.使用動態庫

gcc main.c -o main -lwtf -l.

-lwtf:指定使用wtf這個庫(庫的全名 libwtf.so)

-l. :指定編譯時庫的搜尋路徑在.目錄下

-i/mnt/hgfs/02/動態庫 :指定標頭檔案所在的路徑為:/mnt/hgfs/02/動態

4.執行程式

./main: error while loading shared libraries:

libwtf.so: cannot open shared object file: no such file or directory

錯誤理由:庫是存在的,但是找不到

解決方案:指定執行程式時庫的搜尋路徑

export ld_library_path=$ld_library_path:/mnt/hgfs/…

靜態庫:

.a編譯的時候載入

手動靜態庫:

1.把原始碼編譯生成.o檔案

gcc -c xx.c -o xx.o

2.把所有的.o檔案打包生成靜態庫

ar -rc lib***.a ***.o ***.o

3.把庫和標頭檔案給需要的人

4.使用靜態庫

gcc main.c -o main -lwtf -l.

自動靜態庫

增加 -static項,會自動打包好靜態庫到編譯的main中,main會很大,佔空間,但是很方面

gcc main.c -o main -static

C 靜態庫與動態庫

感覺比較形象,就摘過來了.這次分享的 宗旨是 讓大家學會建立與使用靜態庫 動態庫,知道靜態庫與動態庫的區別,知道使用的時候如何選擇。這裡不深入介紹靜態庫 動態庫的底層格式,記憶體布局等,有興趣的同學,推薦一本書 程式設計師的自我修養 鏈結 裝載與庫 庫是寫好的現有的,成熟的,可以復用的 現實中每個程...

C 靜態庫與動態庫

庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll 所謂靜態 動態是指鏈結。回顧一下,將乙個程...

c 靜態庫與動態庫

庫分為靜態庫,動態庫,在不同系統下字尾不同。2.1.1 在鏈結和執行階段都涉及庫的呼叫 訪問 h檔案 標頭檔案 是庫的介面。h檔案提供給庫的使用者,使用者通過.h來呼叫庫中的api。2.1.2 庫中包含的是函式的實現 一堆函式的實現 這些函式在編寫的時候同樣要包含1中的標頭檔案,然後生成庫。2.1....