Makefile裡呼叫Shell注意點

2022-06-23 08:09:13 字數 791 閱讀 8618

大家經常編寫和使用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...