最近在做新項目的預研,主要是用bcm96xx方案做二次開發。在構建最小文件系統的時候主要遇到了Makefile的調試難題。
調試的內容包括:
1、變量的值;
2、執行流程;
3、內嵌Makefile的調用。
首先,我們回顧一下Makefile執行機制:
我們要明白一點:makefile是一個腳本,所以會解析執行;
GNU的make工作時的執行步驟入下:(想來其它的make也是類似)
1、讀入所有的Makefile。
2、讀入被include的其它Makefile。
3、初始化文件中的變量。
4、推導隱晦規則,並分析所有規則。
5、爲所有的目標文件創建依賴關係鏈。
6、根據依賴關係,決定哪些目標要重新生成。
7、執行生成命令。
1-5步爲第一個階段,6-7爲第二個階段。第一個階段中,如果定義的變量被使用了,那麼,make會把其展開在使用的位置。但make並不會完全馬上展開,make使用的是拖延戰術,如果變量出現在依賴關係的規則中,那麼僅當這條依賴被決定要使用了,變量纔會在其內部展開。
Makefile的基本調試:
1、在有依賴性的地方直接使用echo 輸出變量值和調試信息。
2、Makefile 命令前不要加@。
舉一個例子:
OBJ =test
all:
明天繼續……