Makefile學習之路

1、緣起

  • 雖一直有學好makefile的發心,但並無啥學習場景,看書吧又沒找到合適的教材,這就尷尬了,好在除了面試問一嘴,其它場景上也沒太用上。
  • 最近手上有兩個單子,是跟make相關的,因而藉着這一波,把知識串了一下。git

    • 一、代碼加編譯開關,makeall的腳本里加編譯參數
    • 二、新增了一個文件夾,編譯沒報錯,生成.o文件了,沒有生成執行文件

2、內容

一、項目前提

  • 用makeall的腳原本管理整個項目,這部分呢沒徹底懂呢github

    • Makefile.incl裏寫了通用的配置,好比平臺,編譯和連接方式
    • 各個具體的文件夾內寫了相應的Makefile,這個就比較簡單好懂了,調用Makefile.incl後,而後列一些具體規則clean,all,build,install這些,固然還有一些變量

二、沒有生成exe的解決

  • 開始是徹底沒有思路的。最開始時甚至是不知道能夠用make+規則名。{測試問的我,我就先看了看}面試

    • 最開始覺得是-I -l指定的zookeeper的include不對呢
    • 後來在具體文件夾下執行了下make build居然能生成了,當時能生成,但不知道緣由。
  • 知道問題後,想知道下在哪加入make build,就問了廠內大佬,須要在makeall的腳本里增長。

三、《GNU Make項目管理(3rd)》get到,1st

  • 3.一、Makefile是由規則組成的,規則自己分紅3個部分(target,prerequisite,command),而規則又分爲3種類型(explict,pattern,implict)
  • 3.二、經過make ruleName執行相應的規則,make也是能夠調試的,怎麼調還不太會
  • 3.三、除了自已定義的變量外(這都比較好懂),還有自動變量,好比$@、$%、$<、$?、$^等,必需要知道這些是啥意思,不然腳本看不懂。
  • 3.四、雖然書中」chap4講了函數「,但工程裏我沒看到相應的。
  • 3.五、command雖然有默認的shell(/bin/sh),但也有能夠指定(雖然沒啥必要),tab來區分
  • 3.六、雖然看到了Makefile.incl裏有ar命令,但不一樣的平臺,好像又不太同樣,這個具體啥意思,還不太熟悉
  • 3.七、書中"chap12makefile調試",看了一些常見的錯誤信息,但具體怎麼調還沒怎麼看呢。

四、學習方法和心得

  • 4.一、找到合適的入門教材不容易,尤爲在水平有點差,雲裏霧裏的時候,最好有個實踐環境,好比下個源代碼,而後用命令編譯,有感受後再看書shell

    • 自已改改原來好的Makefile,再跑make build啥的,看報啥錯
  • 4.二、若是項目中用的是Makefile,以項目爲藍本,把整個給吃透,經過查不會的關鍵字,再結合看書,把項目上的目前的Makefile吃透搞懂,再談其它。

3、履歷與參考書籍

一、履歷

  • 20190809寫第1版,讀了「參考1」的Part1和Part2的chap11,12,目標是入門以及讀懂工程中的make相關代碼,之後能直接改錯後面的用iReader smart再看看書吧

二、參考書籍

三、其它

相關文章
相關標籤/搜索