使用變數時在其前面加上($)符號變數的賦值(=)與變數還有值之間都不能有空格,否則不是自己想要的結果
命令前加反引號(就是esc下面的鍵)例如 pwd=
pwd
echo $pwd
效果和執行命令pwd一樣
if [表示式]; then #表示式和括號要有空格
.....
.....
else
.....
fi #結尾
#例如判斷乙個檔案是否存在,存在則列印檔案路徑,不存在則建立檔案
if [ -e a.c ]; then
echo "yes"
else
echo "no"
touch a.c
fi
for i in … #in後面的值為每次迴圈給i賦值do #開始迴圈
…done #迴圈結束標誌
for i in 1 2 3 4 5
doecho $i
done
機構:while [ ] ; do
…done
var=1
case $var in #開頭
1) echo "1" ;;
2) echo "2" ;; #記得加雙分號
esac #結尾語句
1,目標是最終要生成對的檔案2、依賴是就是待編譯的原始檔
%號表示乙個或幾個字母,%.o表示所有的.o檔案
hello : hello.o a.o #目標是hello檔案 依賴是hello.o a.o 但是原始檔沒有hellow.o和a.o,所有要繼續往下面推導
gcc -o $@ $^ #下面的執行完畢後得到hellow.o a.o檔案現在可以開始執行這條命令
%.o : %.c #推導到這裡 表示所有的.0檔案依賴所有的.c檔案,因為原始檔本來就是.c檔案,所有推導結束,執行下面的命令
gcc -o $@ -c $< #把所有的.c檔案編譯成.o檔案
clean : #偽目標
rm *.o hello
例如clean:它後面是沒用檔案依賴的,在命令介面中,只有敲擊偽目標(make clean),偽目標下面的命令才可以執行
命令前面加@表示靜默的執行命令,就是在命令介面不顯示執行了什麼命令?=表示前面沒有賦值過就給變數賦值
+=表示到變數後面追加內容 #注意?= 和+= 後面都必須要有空格
:= 大部分情況下和=相同 其實:=就是相當於c語言的=
= 變數的賦值看最後一次=號賦值(和c語言的=是有區別的)
$@ : 目標<:依
賴第乙個
檔案,如
果是規則
則是所有
檔案(例
如< : 依賴第乙個檔案,如果是規則則是所有檔案(例如%.c 則
<:依
賴第乙個
檔案,如
果是規則
則是所有
檔案(例
如《表示所有檔案)
$^: 依賴的所有檔案集合
%.o:%.c
arm-linux-gcc -wall -o2 -c -o $@ $<
#$@ 表示%.o $《表示%.c
makefile學習筆記 makefile概述
20180411 makefile學習筆記 makefile概述 makefile主要是在unix下軟體編譯時寫的,window下一般不用 unix裡makefile做的事 相當於window裡ide所做的事 會不會寫makefile,從乙個側面說明了乙個人是否具備完成大型工程的能力。makefil...
Makefile學習筆記
makefile for boot asm nasm 定義變數 asmflags i include run qemu system i386 hdd boot.img boot.img boot.asm asm boot.asm f bin o boot.img install run clean...
Makefile學習筆記
本文為學習筆記,僅供參考,如有好的建議歡迎指出!makefile規則 目標檔案 依賴檔案 tab 命令 命令前必須有乙個tab exp test main.c gcc main.c o test 隱式規則 o c 同名匹配 變數 類似於c中的巨集,引用方式 arg 變數名 值 引用變數可在之後定義 ...