11.使用make更新歸檔檔案
本系列文章均翻譯自make官方文件:make Manual,github同步專案:question
Archive files(歸檔檔案)是包含了sub-files的檔案,sub-files被稱做members;它們被ar
程式維護,主要用途是為連結作為子程式庫。
歸檔成員作為目標
一個單獨的歸檔檔案成員可以被作為一個target或者prerequisite。
archive(member)
此結構只能在target和prerequisites中使用。最好使用ar
來管理。
通過複製hack.o在foolib中建立一個成員hack.o檔案:
foolib(hack.o) : hack.o
ar cr foolib hack.o
事實上幾乎所有的歸檔成員目標都以這種方式更新並且有一個預設規則為你做這件事。如果歸檔檔案不存在則需要為ar
加上c
flag。
指定多個成員:
foolib(hack.o kludge.o)
使用萬用字元:
foolib(*.o)
歸檔成員目標的隱含規則
make “foo.a(bar.o)”:
cc -c bar.c -o bar.o
ar r foo.a bar.o
rm -f bar.o
成員不能包括一個目錄名,但是在一個makefile中可能是有用的來假裝它確實存在(but it may be useful in a makefile to pretend that it does)。
foo.a(dir/file.o)
-> ar r foo.a dir/file.o
。???
更新歸檔標誌資料夾
歸檔檔案中有一個特殊的成員__.SYMDEF
,是一個包含了額外的被所有其他成員定義的標誌名的資料夾。
更新了成員之後,通過ranlib
需要更新此成員。
libfoo.a: libfoo.a(x.o) libfoo.a(y.o) …
ranlib libfoo.a
使用ar
進行更新時,會自動更新此成員。
note:如果多個ar
同時在一個歸檔檔案中執行,不能輸出正確地結果。
歸檔檔案的字尾規則
過時寫法:
.c.a:
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
$(AR) r $@ $*.o
$(RM) $*.o
匹配寫法:
(%.o): %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
$(AR) r $@ $*.o
$(RM) $*.o
相關文章
- 使用BBED跳過歸檔檔案
- 使用RMAN安全刪除歸檔檔案
- RAC歸檔配置方案:使用NFS共享儲存儲存歸檔檔案NFS
- 如何輕鬆歸檔檔案?2種方法輕鬆建立歸檔檔案!
- 控制檔案/歸檔日誌
- qmake、.pro(Qt工程檔案)、make、MakefileQT
- GNU make-Makefile檔案簡介
- 配置歸檔位置和檔案格式
- 備份歸檔日誌檔案
- CAB歸檔檔案提取工具cabextract
- 日誌檔案和歸檔管理
- oracle結構梳理---歸檔檔案Oracle
- 強制刪除歸檔檔案
- 改變歸檔檔案路徑
- 刪除歸檔日誌檔案
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- 使用RMAN CROSSCHECK 更新檔案狀態ROS
- 咦?Oracle歸檔檔案存哪了?Oracle
- logmnr挖掘歸檔日誌檔案
- 改變歸檔日誌檔案大小
- RMAN備份資料檔案+控制檔案+歸檔日誌
- oracle 歸檔/非歸檔Oracle
- ASM 中使用RMAN delete archivelog until time刪除歸檔檔案ASMdeleteHive
- 熱更新配置檔案
- 歸檔日誌檔案無故地增長
- 定期刪除歸檔檔案的指令碼指令碼
- RMAN恢復表空間,資料檔案,歸檔檔案,控制檔案等介紹
- 網路管理員指南 -11.網路檔案系統NFS -3>輸出檔案(轉)NFS
- 恢復歸檔日誌檔案的常用方法
- 歸檔
- dbms_backup_restore包恢復控制檔案,資料檔案,歸檔檔案的測試案例REST
- 更新鄧白氏檔案
- SVN之檔案同步更新
- Oracle歸檔模式和非歸檔模式Oracle模式
- 非歸檔模式改為歸檔模式模式
- 使用logmnr,在RMAN備份檔案中恢復備份的歸檔日誌檔案進行分析
- Linux下使用make命令編譯c原始檔Linux編譯
- Oracle 歸檔使用情況分析Oracle