我有一个 C 程序,我想为主机和来宾架构编译它。
主机是 i86 来宾是 ARM
我尝试编写代码如下
CC=arm-none-linux-gnueabi-gcc
all : arm
arm :
CC=arm-none-linux-gnueabi-gcc
host :
CC=gcc
clean :
rm -rf *.o
rm bench
$(CC) src/main.c src/cpu/cpu.c src/include/common.c -Isrc -lrt -static -o bench
但是当我运行 make arm 或 make host 时,我得到一个缺少分隔符的错误。我怎样才能实现这个功能?
编辑:我遵循了接受的答案,但仍然想要一个目标来完成我的任务。为此,我重写了我的 Makefile,如下所示,
all : bench
host_helper :
CC=gcc
arm_helper :
CC=arm-none-linux-gnueabi-gcc
arm : arm_helper bench
host : host_helper bench
all : bench
clean :
@rm -rf *.o
@rm -f bench
bench : clean
$(CC) src/main.c src/cpu/cpu.c src/include/common.c -Isrc -lrt -static -o bench
这是我在运行时获得的输出make arm
CC=arm-none-linux-gnueabi-gcc
cc src/main.c src/cpu/cpu.c src/include/common.c -Isrc -lrt -static -o bench
为什么 CC 变量没有变化?
这是因为 Makefile 为每个目标创建了一个分支,因此一旦 arm_helper 目标完成,CC 变量就会丢失?
是否有可能在这种方法中达到预期的目标?