編譯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 \