大家經常編寫和使用makefile, makefile裡面也經常用到shell, 但對其中一些需要注意的地方未必
會去留意, 這裡列出幾個來, 不知是否對大家有用。
1. 注意makefile的變數和shell變數, 看如下示例:
dirs = src bin lib
all:
@for i in $(dirs); /
do /
echo " " $$i; /
done
大家看出來了嗎? dirs是makefile變數,i是shell變數, 使用的時候:
$(dirs), $$i區別還是蠻大的。
2. 每一行的shell都是在獨立的程序中執行的,如果你在上一行為乙個變數賦值, 不要指望它在下一行有效, 比如:
@cross_compile=mipsel-linux-
@echo $(cross_compile)
列印的結果不會是mipsel-linux-,如果你想得到所要的結果, 就並為一條shell吧:
@cross_compile=mipsel-linux- ; echo @echo $(cross_compile)
或者:@cross_compile=mipsel-linux- ; /
echo @echo$(cross_compile)
3. shell一定要寫在target裡, 否則你寫了也白費勁, 是會被make忽略掉的.
@echo "building all..."
all:
@echo "begin"
只會列印begin.
一 Makefile裡有什麼?
makefile裡主要包含了五個東西 顯式規則 隱晦規則 變數定義 檔案指示和注釋。1 顯式規則。顯式規則說明了,如何生成乙個或多的的目標檔案。這是由makefile的書寫者明顯指出,要生成的檔案,檔案的依賴檔案,生成的命令。2 隱晦規則。由於我們的make有自動推導的功能,所以隱晦的規則可以讓我們...
Makefile裡的sed指令
在makefile裡經常看到sed指令,經常看到替換功能,今天寫了個makefile來學習下sed的替換功能,makefile如下 test abcdefghisdabcjsdlfkj test2 test sed e s abc 123 g debug echo test echo test2 然...
Linux系統下檢視檔案呼叫情況Shell命令
ldd full path conmmand 1 首先ldd不是乙個可執行程式,而只是乙個shell指令碼 2 ldd能夠顯示可執行模組的dependency,其原理是通過設定一系列的環境變數,如下 ld trace loaded objects ld warn ld bind now ld lib...