makefile詳解 使用make更新函式庫檔案(結束) 二十六
———————————
函式庫檔案也就是對Object檔案(程式編譯的中間檔案)的打包檔案。在Unix下,一般是由命令"ar"來完成打包工作。
一、函式庫檔案的成員
一個函式庫檔案由多個檔案組成。你可以以如下格式指定函式庫檔案及其組成:
archive(member)
這個不是一個命令,而一個目標和依賴的定義。一般來說,這種用法基本上就是為了"ar"命令來服務的。如:
foolib(hack.o) : hack.o
ar cr foolib hack.o
如果要指定多個member,那就以空格分開,如:
foolib(hack.o kludge.o)
其等價於:
foolib(hack.o) foolib(kludge.o)
你還可以使用Shell的檔案萬用字元來定義,如:
foolib(*.o)
二、函式庫成員的隱含規則
當make搜尋一個目標的隱含規則時,一個特殊的特性是,如果這個目標是"a(m)"形式的,其會把目標變成"(m)"。於是,如果我們的成員是"%.o"的模式定義,並且如果我們使用"make foo.a(bar.o)"的形式呼叫Makefile時,隱含規則會去找"bar.o"的規則,如果沒有定義bar.o的規則,那麼內建隱含規則生效,make會去找bar.c檔案來生成bar.o,如果找得到的話,make執行的命令大致如下:
cc -c bar.c -o bar.o
ar r foo.a bar.o
rm -f bar.o
還有一個變數要注意的是"$%",這是專屬函式庫檔案的自動化變數,有關其說明請參見"自動化變數"一節。
三、函式庫檔案的字尾規則
你可以使用"字尾規則"和"隱含規則"來生成函式庫打包檔案,如:
.c.a:
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
$(AR) r
$(RM) $*.o
其等效於:
(%.o) : %.c
$(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
$(AR) r [email protected] $*.o
$(RM) $*.o
四、注意事項
在進行函式庫打包檔案生成時,請小心使用make的並行機制("-j"引數)。如果多個ar命令在同一時間執行在同一個函式庫打包檔案上,就很有可以損壞這個函式庫檔案。所以,在make未來的版本中,應該提供一種機制來避免並行操作發生在函式打包檔案上。
但就目前而言,你還是應該不要儘量不要使用"-j"引數。
最最後,我還想介紹一下make程式的設計開發者。
首當其衝的是: Richard Stallman
開源軟體的領袖和先驅,從來沒有領過一天工資,從來沒有使用過Windows作業系統。對於他的事蹟和他的軟體以及他的思想,我無需說過多的話,相信大家對這個人並不比我陌生,這是他的主頁:http://www.stallman.org/ 。這裡只貼上一張他的近照:
gunguymadman 回覆於:2004-09-16 12:27:15
第二位是:Roland McGrath
個人主頁是:http://www.frob.com/~roland/ ,下面是他的一些事蹟:
1) 合作編寫了並維護GNU make。
2) 和Thomas Bushnell一同編寫了GNU Hurd。
3) 編寫並維護著GNU C library。
4) 合作編寫並維護著部分的GNU Emacs。
在此,向這兩位開源專案的鬥士致以最真切的敬意。
相關推薦
makefile詳解 使用make更新函式庫檔案(結束) 二十六
使用make更新函式庫檔案 ——————————— 函式庫檔案也就是對Object檔案(程式編譯的中間檔案)的打包檔案。在Unix下,一般是由命令"ar"來完成打包工作。 一、函式庫檔案的成員 一個函式庫檔案由多個檔案組成。你可以以如下格式指定函式庫檔案及其組成: archive(member) 這個
跟我一起寫Makefile:使用make更新函式庫檔案
轉載: 使用make更新函式庫檔案 函式庫檔案也就是對Object檔案(程式編譯的中間檔案)的打包檔案。在Unix下,一般是由命令"ar"來完成打包工作。 函式庫檔案的成員 一個函式庫檔案由多個檔案組成。你可以以如下格式指定函式庫檔案及其組成: archi
makefile詳解 make 的執行 二十三
make 的執行 —————— 一般來說,最簡單的就是直接在命令列下輸入make命令,make命令會找當前目錄的makefile來執行,一切都是自動的。但也有時你也許只想讓make重編譯某些檔案,而不是整個工程,而又有的時候你有幾套編譯規則,你想在不同的時候使用不同的編譯規則,等等。本章節就是講述如何使用ma
MAKEFILE詳解 包含內容 包含其他檔案 八
一、Makefile裡有什麼? Makefile裡主要包含了五個東西:顯式規則、隱晦規則、變數定義、檔案指示和註釋。 1、顯式規則。顯式規則說明了,如何生成一個或多的的目標檔案。這是由Makefile的書寫者明顯指出,要生成的檔案,檔案的依賴檔案,生成的命令。 2、隱晦規則。由於我們的make有自動推導的功能
Linux程序上下文切換過程context_switch詳解--Linux程序的管理與排程(二十一)
1 前景回顧 1.1 Linux的排程器組成 2個排程器 可以用兩種方法來啟用排程 一種是直接的, 比如程序打算睡眠或出於其他原因放棄CPU 另一種是通過週期性的機制, 以固定的頻率執行, 不時的檢測是否有必要 因此當前linux的排程程式由兩個排程器組成:主排程器,週期性排程器(兩者
MySQL數據庫8(二十六)存儲過程
com 直接 形參 基本上 一次 cal inf 分享 技術分享 存儲過程 存儲過程的概念 存儲過程(stored procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL語句集,存儲在數據庫中,經過第一次編譯後再次調用不需要再次編譯,(效率比較高)用戶通
make之makefile 十 函式庫檔案
一、簡單的靜態庫書寫編譯和測試 檔案目錄如下所示: . ├── Makefile ├── MakefileTest ├── include.c ├── include.h └── main.c 0 directories, 5 files 其中main.c函式裡面會呼叫includ
makefile詳解 函式 foreach if call origin shell 控制make函式 二十二
四、foreach 函式 foreach函式和別的函式非常的不一樣。因為這個函式是用來做迴圈用的,Makefile中的foreach函式幾乎是仿照於Unix標準Shell(/bin/sh)中的for語句,或是C-Shell(/bin/csh)中的foreach語句而構建的。它的語法是: $(f
開啟檔案open()函式的使用方法詳解--C語言函式
標頭檔案:#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>定義函式: int open(const char * pathname, int
makefile詳解 函式 字串 檔名 二十一
在Makefile中可以使用函式來處理變數,從而讓我們的命令或是規則更為的靈活和具有智慧。make所支援的函式也不算很多,不過已經足夠我們的操作了。函式呼叫後,函式的返回值可以當做變數來使用。 一、函式的呼叫語法 函式呼叫,很像變數的使用,也是以“$”來標識的,其語法如下: $(<functio
MVC之Ajax.BeginForm使用詳解之更新列表
分布 use html text col 返回 uno pts scripts 1.首先,請在配置文件設置如下:(該項默認都存在且為true) <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 2
mongo 3.4分片集群系列之六:詳解配置數據庫
初始化 kpi 更新 並且 color tag 成員 gin sha 這個系列大致想跟大家分享以下篇章(我會持續更新的↖(^ω^)↗): 1、mongo 3.4分片集群系列之一:淺談分片集群 2、mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3、mongo
makefile詳解
makefile原文鏈接:https://blog.csdn.net/qq_38646470/article/details/79917494專欄鏈接:https://blog.csdn.net/column/details/20028.html 或許很多Wino
一篇文章詳解NOsql數據庫Redis
iss mem 新浪 簡單 加載 release 單線程 高速 etc 一圖詳解DB的分支產品osql數據庫介紹 是一種非關系型數據庫服務,它能解決常規數據庫的並發能力,比如傳統的數據庫的IO與性能的瓶頸,同樣它是關系型數據庫的一個補充,有著比較好的高效率與高性能。 專註於
多級緩存設計詳解 | 給數據庫減負,刻不容緩!
開關 主動 引入 least 頻率 運算 性能 定期刪除 為什麽 前言 自古兵家多謀,《謀攻篇》,“故上兵伐謀,其次伐交,其次伐兵,其下攻城。攻城之法,為不得已”,可見攻城之計有很多種,而爬墻攻城是最不明智的做法,軍隊疲憊受損、錢糧損耗、百姓遭殃。故而我們有很多迂回之策,謀
撩課-MySQL詳解1-數據庫簡介
index 整體 sele 數據庫名 16px csharp lec 廣泛 rip 學習地址:[撩課-JavaWeb系列1之基礎語法-前端基礎][撩課-JavaWeb系列2之XML][撩課-JavaWeb系列3之MySQL][撩課-JavaWeb系列4之JDBC][撩課-J
詳解python 3下文字檔案的編解碼
很多次遇到python 3下的檔案編碼,解碼問題,我這裡的平臺是mac,下面吐血搞一波。。 1. ASCII編碼: 字串是一種資料型別,但是,字串比較特殊的是還有一個編碼問題。因為計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位
Linux下多資料夾編寫Makefile詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
linux中更新glibc庫檔案到2.17
1 確保安裝過gcc yum install gcc 2 獲取glibc相關版本 wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.xz 3 解壓建立目錄 xz -d glibc-2.17.tar.xz tar -x
python tsfresh特徵中文詳解(更新中)
tsfresh是開源的提取時序資料特徵的python包,能夠提取出超過64種特徵,堪稱提取時序特徵的瑞士軍刀。最近有需求,所以一直在看,目前還沒有中文文件, 有些特徵含義還是很難懂的,我把我已經看懂的一部分放這,沒看懂的我只寫了標題,待我看懂我添加註解。 tsfresh.fea