makefile概念和原理

2021-10-07 08:31:31 字數 1369 閱讀 3297

首先我們討論一下makefile是什麼它為什麼會存在

makefile是什麼?長話短說makefile是一種**管理工具,也是一種shell指令碼

為什麼會存在呢? 例如通常我們編譯乙個 cpp 檔案:

g++ main.cpp -o main

這樣的也許我們覺得很輕鬆 但是如果要編譯的檔案數量有幾十個呢?

難道我們 g++ main.cpp server.cpp client.cpp ...... cpp  -o main 這樣寫嘛? 再者 我們每次修改之後都要重新編譯這些檔案

又要重新寫 錯誤率不僅上公升了,而且編譯效率也不高 所以我們引用了makefile 這種**管理工具

一.makefile的檔名種類:

1.makefile    2.makefile   首字母大小寫都是可以的

二, makefile 的規則

規則的三要素:目標,依賴, 命令

格式: 第一行: 目標:依賴條件

第二行: table (必須的)  命令

三者的關係

通俗一點講就是   依賴(相當於原材料) -> 命令(加工)->  目標(產物)

我們先來寫乙個 簡單的demo(後續我們將介紹相關的函式,變數和特殊的符號) 引用 一下makefile 是如何提高編譯效率的

效果如下:

這裡我們可以看到只需要一條命令就可以 編譯整個檔案 是不是很快捷

思考:當我們修改了main.cpp乙個檔案的時候,他會不會兩個cpp檔案都重新編譯成 .o 的二進位制檔案呢?

答案是不會的,原理如下

這裡的

第一條規則找不到依賴了  去尋找的新規則

總之  makefile內部的工作原理 會幫我們 檢測出誰是修改過的檔案 (怎麼檢測的呢:根據檔案最後一次修改的時間)

然後只編譯那個修改過的檔案生成 .o 檔案  然後重新通過命令生成可執行檔案main

來一起討論

Bloom Filter 概念和原理

bloom filter 是由 howard bloom 在 1970 年提出的二進位制向量資料結構,它具有很好的空間和時間效率,被用來檢測乙個元素是不是集合中的乙個成員。如果檢測結果為是,該元素不一定在集合中 但如果檢測結果為否,該元素一定不在集合中。因此bloom filter具有100 的召回...

LDAP概念和原理介紹

ldap概念和原理介紹 相信對於許多的朋友來說,可能聽說過ldap,但是實際中對ldap的了解和具體的原理可能還比較模糊,今天就從 什麼是ldap ldap的主要產品 ldap的基本模型 ldap的使用案例 四個方面來做乙個介紹。我們在開始介紹之前先來看幾個問題 1.我們日常的辦公系統是不是有多個?...

Tomcat 7 (1)概念和原理

概念和原理 概念 tomcat 原理 1 connector元件 接收客戶端連線 加工處理客戶端請求。每個connector定義乙個埠進行監聽,分別去負責請求報文的解析和響應組裝。解析的過程生成request物件,組裝的過程生成response物件。其實就是乙個聯結器,如果將tomcat比作乙個巨大...