BUGS_10 gcc編譯報錯"commands commence before first target. Stop"

編譯smartconfig時出現:

make[3]: Entering directory `xxx/compile_dir/target/smartlinkd/src'
Makefile:11: *** commands commence before first target.  Stop.
make[3]: Leaving directory `xxx/compile_dir/target/smartlinkd/src'
make[2]: *** [xxx/compile_dir/target/smartlinkd/.built] Error 2
make[2]: Leaving directory `xxx/tina/package/allwinner/smartlinkd'
make[1]: *** [package/allwinner/smartlinkd/install] Error 2

可以清楚看到主要錯誤提示就是"commands commence before first target. Stop."
字面意思就是命令在第一個目標之前開始.停止
不知所云,所以百度了一下發現居然就是換行符惹得禍,在Makefile中include頭文件時,利用如下操作:

28 XRADIO_SMARTCONFIG_INC_PATH  =-I$(XRADIO_SMARTCONFIG_ROOT) \                                                                                                       
29                                                   -I$(NETLINK_PATH_ROOT) 
30                                                   -I$(NETLINK_PATH_ROOT)/genl \

看出問題了嗎?原來29行少了個換行符.
同時查看其他人的解釋如果

我們知道, 在C/C++語言中, 可以用\來換行, 此時要注意, 在一行的最後面加上, 而這個\後面不能再有任何字符, 哪怕是空格, 也不允許, 否則出錯。
對於makefile, 也有類似的原則, 一不小心, 在\後多了個空格, 結果編譯出現:commands commence before first target

正確操作:

28 XRADIO_SMARTCONFIG_INC_PATH  =-I$(XRADIO_SMARTCONFIG_ROOT)  \
29                                                   -I$(NETLINK_PATH_ROOT)   \
30                                                   -I$(NETLINK_PATH_ROOT)/genl \

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章