CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%) what is the usage of "%"=%?
时间: 2024-06-04 12:08:55 浏览: 13
在这段代码中,"%"=% 的作用是将 $(CONFIG_CROSS_COMPILE) 变量中的所有 % 字符替换为空字符,也就是去掉变量值中的引号。
在 Makefile 中,"%" 表示匹配任何字符串,"=" 表示进行赋值。因此,$(CONFIG_CROSS_COMPILE:"%"=%) 表示将 $(CONFIG_CROSS_COMPILE) 中所有的 % 字符替换成空字符。
假设 $(CONFIG_CROSS_COMPILE) 的值为 "arm-linux-gnueabihf-",则 $(CONFIG_CROSS_COMPILE:"%"=%) 的值为 arm-linux-gnueabihf-,即去掉了引号的值。最终,CROSS_COMPILE 变量的值将被设置为 arm-linux-gnueabihf-,作为交叉编译器的前缀。
相关问题
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
这是一个 Makefile 的语法代码,它用于指定交叉编译器的前缀。
在 Makefile 中,CROSS_COMPILE 是一个变量,用于指定交叉编译器的前缀。如果该变量未定义,则使用 CONFIG_CROSS_COMPILE 变量的值作为前缀。其中,CONFIG_CROSS_COMPILE 是一个在其他地方定义的变量,用于指定交叉编译器的路径和前缀。
这段代码中的 "?=" 表示如果 CROSS_COMPILE 变量未定义,就使用等号后面的值进行赋值。":" 表示将变量替换成另一个变量的值。"%" 表示匹配任何字符串,"=" 表示进行赋值。
因此,这段代码的作用是如果 CROSS_COMPILE 变量未定义,就使用 CONFIG_CROSS_COMPILE 变量的值作为前缀。
CROSS_COMPILE ?= AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump export AS LD CC CPP AR NM export STRIP OBJCOPY OBJDUMP CFLAGS := -Wall -O2 -g CFLAGS += -I $(shell pwd)/include LDFLAGS := export CFLAGS LDFLAGS TOPDIR := $(shell pwd) export TOPDIR TARGET := test obj-y += display/ obj-y += unittest/ all : start_recursive_build $(TARGET) @echo $(TARGET) has been built! start_recursive_build: make -C ./ -f $(TOPDIR)/Makefile.build $(TARGET) : built-in.o $(CC) -o $(TARGET) built-in.o $(LDFLAGS) clean: rm -f $(shell find -name "*.o") rm -f $(TARGET) distclean: rm -f $(shell find -name "*.o") rm -f $(shell find -name "*.d") rm -f $(TARGET)
在你提供的 Makefile 中,我没有看到任何问题。`missing separator` 错误通常是由于缩进问题引起的,但是你的 Makefile 中的规则看起来是正确缩进的。
要解决这个问题,你可以尝试以下几个步骤:
1. 确保你的 Makefile 使用的是制表符而不是空格进行缩进。有些编辑器可能会将制表符转换为空格,这可能会导致错误。你可以在编辑器设置中查找并禁用此选项。
2. 检查 Makefile 中每个规则的前面是否有一个冒号(:)。确保每个规则都遵循以下格式:
```
target: dependencies
command
```
注意,`: dependencies` 和 `command` 之间有一个制表符缩进。
3. 确保 Makefile 中没有其他非法字符或语法错误。请检查每一行是否正确,没有多余的空格或特殊字符。
如果你仍然遇到问题,请提供完整的错误消息和任何其他相关信息,以便我能够更好地帮助你。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![sh](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)