Head First C 學習日誌 第八章 靜態庫與動態庫 靜態庫的建立與使用

Head First C 學習日誌 第八章 靜態庫與動態庫

靜態庫:

靜態庫是1個或者一組目標文件.o的歸檔,在連接階段使用,生成一個可執行文件。 靜態庫引入的緣由是,當你的程序由多個源文件構成,而你想共享.o文件,固然你能夠將全部的.o都共享,可是這樣實在不方便,因而咱們就將1個活多個.o文件,歸檔爲1個.a 靜態庫文件git

建立一個靜態庫:
  1. 將原文件編譯爲.o文件 gcc yourcode.c -c
  2. 使用.o文件建立靜態庫:ar -rcs libhfsec.a encrypt.o checksum.o
    • 命令ar表示歸檔
    • rcs:r表示若是.a文件存在就更新它,c表示存檔時不顯示反饋信息,s表示告訴ar在.a文件開頭建立索引。
    • libhfsec.a:這是咱們要建立的靜態庫文件,注意必定要以libxxx.a命名。
    • encrypt.o checksum.o:這是咱們要歸檔的.o文件。
  3. 使用靜態庫文件gcc testrun.c -L/Users/AlexTuan/HFC/lib/stlib -lhfsec -o testrun
    • testrun.c:是咱們的main函數所在的源文件
    • -L/Users/AlexTuan/HFC/lib/stlib:-L表示,指定靜態庫文件所在的目錄,目錄能夠用絕對路徑和相對路徑,不指定則從系統默認的靜態庫路徑查找。
    • -lhfsec:指定咱們要使用的靜態庫libhfsec.a,這就是咱們要以libxxx.a格式命名的緣由,能夠用-lxxx的方式來指定咱們的靜態庫。
  4. 使用make自動構建
encrypt.o:encrypt.c encrypt.h
	gcc -c encrypt.c
checksum.o:checksum.c checksum.h
	gcc -c checksum.c
testrun.o:testrun.c
	gcc -c testrun.c
libhfsec.a:encrypt.o checksum.o
	ar -rcs stlib/libhfsec.a encrypt.o checksum.o
testrun:testrun.o libhfsec.a
	gcc testrun.o -L./stlib -lhfsec -o testrun
要點
  1. 一個庫有多個目標文件
  2. 使用ar命令建立靜態庫
  3. 靜態庫命名要以libxxx.a的格式,調用時直接-lxxx
代碼

lib samplegithub

相關文章
相關標籤/搜索