Gnu-Make

$(shell uname -r)中的shell是什麼意思

  • July 6, 2020

我正在閱讀一個生成文件,在那裡我找到了這個語句

make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules

誰能在這裡解釋一下什麼是shell。這裡正在嘗試命令替換,但只有 uname -r 就足夠了。為什麼要使用 shell 詞,它的含義是什麼?

我已經嘗試過在 shell 上做人,但正如我所料,它什麼也沒顯示。我還嘗試在命令行上執行 shell uname -r。這沒用。我相信這個變數是在make中定義的。

我敢打賭,這條線在一個Makefile,很可能是對make.

Makefile 使用$(VAR)(或${VAR})表示局部變數或環境變數。

注意與 bash 的區別,其中的$(VAR)意思是“執行 VAR 並獲取結果”,因此在 Makefile 中使用另一種語法以獲得類似的效果

$(shell uname -r)

總結一下

  • $(shell uname -r)將擴大到結果uname -r
  • $(PWD)將擴大到$PWD的價值

參見GNU Makefile 參考

引用自:https://unix.stackexchange.com/questions/596935