2016-12-16 66 views
0

下面的腳本是從arch/arm/MakefileARM Makefile段說明

ifneq ($(machine-y),) 
MACHINE := arch/arm/mach-$(word 1,$(machine-y))/ 
else 
MACHINE := 
endif 

我的問題是:

1.Is machine-y可變

2.In除了字母,什麼是合法字符,形成一個變量?

3.我找不到machine-y的定義,編譯器如何知道正確的目錄?

例如,當我使用#include <mach/gpio.h>時,編譯器必須從arch/arm/mach-at91/include/mach/gpio.harch/arm/mach-s3c2410/include/mach/gpio.h或其他選擇正確的。

回答

0

$(machine-y)調用存儲在machine-y變量中的值。在make中有several ways爲變量賦值。變量分配的一種方式是從環境中提取變量。引用GNU make手冊:

make中的變量可能來自運行make的環境。每個環境變量 在啓動時都會看到它被轉換爲具有相同 名稱和值的make變量。

如果在任何makefile中找不到machine-y並且您沒有通過命令行傳遞它,那很可能是環境變量。

檢查this section瞭解有關允許的變量名稱字符的更多信息。基本上,只要你的shell /環境可以處理它們,你可以使用:,#,=whitespace以外的任何字符。

0

要回答你的問題:

  1. 是,機器y是在內核的Makefile中的變量。

  2. 更好的查閱Makefile文件。

  3. 查找內核文件: arch/arm/Makefile,你可以看到這個代碼:

    machine-$(CONFIG_ARCH_ALPINE) += alpine machine-$(CONFIG_ARCH_ARTPEC) += artpec machine-$(CONFIG_ARCH_AT91) += at91

當某些CONFIG_XXX被稱爲 「Y」 在內核配置中啓用, 「機器Y」變量會將相應的字符串添加到它。在上面的情況下,如果CONFIG_ARCH_ALPINE設置爲'y',那麼machine-y將自己添加「alpine」。

+0

三克油(3q) – Divlaker