《七》makefile靜態(tài)庫的生成和使用
工程結(jié)構(gòu)

其中include里面有helloworld.h文件


這里為了演示靜態(tài)庫,
工程很簡單,就是主函數(shù)調(diào)用helloworld的庫,輸出一句 "hello world" .
通常情況下庫的都包含兩部分,一部分是通過.c文件編譯生成的庫,另一部分是庫對應(yīng)的.h文件.
這個.h文件就是庫的對外接口,里面有庫的函數(shù),通過調(diào)用庫的.h里面的函數(shù),就能夠?qū)崿F(xiàn)庫的所有功能.
main.c文件
helloworld.c文件
helloworld.h文件:
makefile文件(只有一個頂層makefile)
上面的makefile中
生成靜態(tài)庫的語法:ar -r library_a.a helloworld.o???
還有一個問題.gcc 調(diào)用過程中,用到了CFLAGS變量.
如果沒有CFLAGS變量,就會導(dǎo)致:
main.o 目標(biāo)文件被正確的生成,但在連接時找不到my_printf() 函數(shù)。由于 my_printf()函數(shù)的實現(xiàn)是放在 helloworld.a 庫中的,而我們又沒有告訴編譯器,在連接時應(yīng)當(dāng)?shù)?helloworld.a中找所需的函數(shù)。所以需要用到 gcc的-l(小寫的 L)和-L 選項.

運(yùn)行:

標(biāo)簽:makefile