# 預處理 ## 動態庫和靜態庫 > 庫: 將源文件生成的二進位文件 只需要鏈接即可生成可執行文件 ## 製作靜態庫 ``` linux gcc -c fun.c -o fun.o ar rc libtestlib.a fun.o ``` ### 使用靜態庫 #### 庫和工程在同一目錄下 ``` ...
預處理
動態庫和靜態庫
庫: 將源文件生成的二進位文件 只需要鏈接即可生成可執行文件
製作靜態庫
gcc -c fun.c -o fun.o
ar rc libtestlib.a fun.o
使用靜態庫
庫和工程在同一目錄下
gcc main.c libtestlib.a
靜態庫libtestlib.a 以lib開頭 .a結尾 中間才是庫的名稱testlib
庫和庫的頭文件.h在自定義目錄(推薦)
自定義目錄比如 lib目錄
gcc main.c -I./lib -L./lib -ltestlib
-I: include目錄 -L: lib目錄 -l: 庫名
製作動態庫
sudo gcc -shared fun.c -o libtestlib.so
動態庫的使用
庫和工程在同一目錄下
gcc main.c -o main libtestlib.so
將當前目錄./ 添加到庫的搜索路徑中
export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH
運行
./main
庫在自定義目錄下`
gcc main.c -o main -L./lib -ltestlib
如果靜態庫和動態庫同時存在,預設編譯選擇動態庫,只有加-static才能鏈接靜態庫