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
相關文章
- 如何輕鬆歸檔檔案?2種方法輕鬆建立歸檔檔案!
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- qmake、.pro(Qt工程檔案)、make、MakefileQT
- GNU make-Makefile檔案簡介
- 咦?Oracle歸檔檔案存哪了?Oracle
- 熱更新配置檔案
- 在 Linux 中如何歸檔檔案和目錄Linux
- 如何使用 logrotate 命令保持日誌檔案更新logrotate
- Linux下使用make命令編譯c原始檔Linux編譯
- 更新鄧白氏檔案
- Oracle 歸檔使用情況分析Oracle
- UAVStack之檔案資料歸集
- rac歸檔模式/非歸檔模式下檔案建至本地儲存修復方法-ORA-01157模式
- Oracle歸檔檔案丟失導致OGG不用啟動Oracle
- oracle歸檔Oracle
- iOS 複雜物件的歸檔與反歸檔iOS物件
- 如何刪除win10更新檔案_win10刪除更新檔案的方法Win10
- 在Oracle中,如何定時刪除歸檔日誌檔案?Oracle
- .htaccess檔案使用
- win10怎麼刪除更新檔案 win10刪除更新檔案的方法Win10
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- 刪除歸檔
- 清除Oracle控制檔案中的歸檔資訊v$archived_logOracleHive
- 在Linux中,如何進行備份或歸檔檔案(tar 命令)?Linux
- embed小技巧-動態檔案更新
- langfuse使用的postgresql(docker)啟用歸檔SQLDocker
- js實現使用檔案流下載csv檔案JS
- 使用ln同步檔案內容,支援忽略檔案
- 教你批次歸類大量桌面檔案的方法
- SharePlex跳過歸檔或從指定歸檔位置開始
- 怎樣刪除w10更新檔案提示_win10更新檔案提示刪除如何操作Win10
- Cycript檔案的使用
- coredump檔案的使用
- 使用Unison 同步檔案
- 使用檔案重定向
- 使用Samba共享檔案Samba
- 資料表結構更新後,遷移檔案怎麼使用?
- angular版本更新與配置檔案問題Angular