linux
windows
函數
spa
#include "xxxx.h"
二.什麼是標準頭文件?操作系統
書寫c語言時,#include <stdio.h>其中stdio.h文件是標準頭文件,標準頭文件的保存目錄(在linux系統中)是:/usr/local/include或/usr/include。code
三.將自定義函數名文件做爲標準頭文件使用的步驟blog
第一種方法:將頭文件放在標準目錄中編譯器
第二種方法:在include語句中使用完整路徑名io
#include"/xxxx/xxxx.h"編譯
第三種方法告訴編譯器去哪裏找頭文件
gcc -I./頭文件所在目錄 c文件 -c 目標文件名
四,共享目標文件
將.o目標文件放入一個共享目錄的地方,編譯時加上參數便可
gcc -I /目標文件目錄 c源文件 /目標文件目錄/目標文件 /目標文件目錄/目標文件 -o 須要編譯的目標文件
五.靜態庫
1.靜態庫是什麼?
靜態庫中存儲了由c文件編譯後生成的目標文件(.o結尾),打包而造成的文件
靜態庫多爲.a結尾文件,在linux操做系統中靜態庫文件的名字格式爲libxxxx.a,系統靜態庫文件存放在/usr/local/lib 或 /usr/lib 或/usr/lib64/
使用nm命令可查看靜態庫文件內容
1.怎樣建立靜態庫?
ar -rcs 靜態庫文件名 多個目標文件的名字
2.編譯時怎麼樣調用靜態庫
gcc 要編譯的c源文件名字 -l靜態庫名字 -o 目標文件名字
-l選項後面的名字必須與靜態庫名字的一部分匹配
上面的例子是調用在系統標準靜態庫目錄下的靜態庫文件
下面的例子是調用自定義目錄下的靜態庫文件
gcc 要編譯的c源文件名字 -L存放靜態庫的目錄名字 -l靜態庫名字 -o 目標文件名字
六.動態庫
1.什麼是動態庫?
動態庫文件的格式爲:
xxxx.dll(windows操做系統)
xxxx.dll.a(windows操做系統)
libxxx.so(linux操做系統)
libxxxx.dylib(mac操做系統)
在程序運行時加載的庫文件,與靜態庫的區別,靜態庫是在編譯時就將代碼組合到一塊兒生成一個可執行文件,不須要相同的環境便可將可執行文件移植到其餘機器使用,而動態庫是在程序加載時動態載入目標文件,可執行文件與動態庫文件必須同時存在,不可單獨移植到其餘機器。
2.動態庫文件的建立:
首先建立目標文件
gcc -I頭文件所在目錄 -fPIC -c c源文件名字 -o 目標文件名字
-fPIC選項告訴編譯器建立位置無關代碼
建立動態庫文件
gcc -shared 上一步生成的目標文件名字 -o 動態庫文件的名字
運行程序時調用標準目錄下的動態庫,直接運行程序便可
調用自定義目錄下的動態庫文件的方法:
linux下首先設置變量指向自定義的動態庫目錄:
export LD_LIBRARY_PATCH=$LD_LIBRARY_PATCH:自定義的動態庫目錄