本質上來說,庫是一種執行的二進位制形式,可以被作業系統載記憶體執行。
靜態庫在程式編譯時會被鏈結到目標**中,程式執行時將不需要該靜態庫,因此體積較大。
動態庫在程式編譯時並不會被鏈結到目標**中,而是在程式執行時才被載入,因此在程式執行時需要動態庫的存在,因此**體積較小。
1.生成目標檔案 hello.o
2.建立靜態庫 #ar crs libmyhello.a hello.o 靜態庫格式 lib**.a
3.使用靜態庫 #gcc -o hello main.c -l. -lmyhello
1.生成目標檔案(**位置獨立的目標檔案**)
#gcc -fpic -c hello.c
2.建立動態庫 #gcc -shared -libmyhello.so hello.o
3.使用動態庫 #gcc -o hello main.c -l. -lmyhello
4.設定執行時庫路徑
方法1: export ld_library_path="動態庫檔案所在目錄"
方法2: 修改配置檔案 etc/ld.so.conf.d/ 目錄下新建乙個 mylib.conf 檔案,並加入動態庫檔案的存放路徑,再執行 ldconfig 命令
庫(靜態庫和動態庫)
一 靜態庫 以c語言的形式生成庫 h中extern c int add int int extern c int sub int int 二.測試靜態庫 將.h和.lib放入 h ifdef cplusplus c 程式設計師用c的方式開啟 extern c int add int int exte...
靜態庫和動態庫
一。靜態庫 靜態庫的優點在於使用簡單,編譯快速。靜態庫在應用程式生成時,已經編譯成為可重定位的目標檔案,因此可以不必再編譯,節省編譯時間,以最短的時間生成可執行程式。步奏 a。建立靜態庫 1 在編輯器中編輯其靜態庫函式 static lib.c 2 在shell中編譯該原始檔,生成乙個可重定位的目標...
靜態庫和動態庫
靜態庫 lib 中相當於存放了所有的源 包括他引入的其他靜態lib檔案.其實是所有cpp編譯後對應的.obj檔案的打包 所以靜態lib都比較大。動態庫dll也有lib但是這個lib,只是用來幫助程式在鏈結時定位dll中的函式的位址的。所以會在exe載入時才重定位函式的位址。重定位就是根據鏈結的這個l...