这里想研究一下GCC在window的编译机制,已经在nordic的SDK上测试成功,请看文章:https://blog.csdn.net/chengdong1314/article/details/124601952(开发环境的搭建请看这篇文章)
但是nordic的工程和Makefile太复杂了,不适合做研究,所以又找到了一个STM32的项目来做研究,源码来自:https://gitee.com/elitah/stm32_gcc_test.git 下载解压后可以看到Makefile如下:
BIN = led_on
OBJS = head.o rcc.o systick.o gpio.o usart.o common.o main.o
GCC = arm-none-eabi-
GFLAG = -mcpu=cortex-m3 -mthumb -Wall
CFLAG = -I./include/
$(BIN).bin: $(OBJS)
$(GCC)ld -T$(BIN).lds $^ -o $(BIN)_elf
$(GCC)objcopy -O binary -S $(BIN)_elf $(BIN).bin
$(GCC)objdump -D -m arm $(BIN)_elf > $(BIN).dis
ftp: $(BIN).bin
@chmod 0755 ./ftp.sh
@./ftp.sh
%.o : %.s
$(GCC)gcc $(GFLAG) $(CFLAG) -c -o $@ $<
%.o : %.S
$(GCC)gcc $(GFLAG) $(CFLAG) -c -o $@ $<
%.o : %.c
$(GCC)gcc $(GFLAG) $(CFLAG) -c -o $@ $<
clean:
rm -f *.o *elf *.bin *.dis *~ *bak
注意:rm命令在linux中可用,在window不行,可以把rm换成del,参考文章:https://blog.csdn.net/chengdong1314/article/details/124613617 在CMD中调用gcc编译成功: 编译成功后生成如下bin文件: 然后使用JFLASH下载代码到STM32芯片中并且运行: 可以看到LED灯正常闪烁了: 本文源代码请从如下地址下载:https://download.csdn.net/download/chengdong1314/85300460
另外,关于Makefile的注释说明如下(请按照序号浏览):
BIN = led_on
OBJS = head.o rcc.o systick.o gpio.o usart.o common.o main.o
GCC = arm-none-eabi-
GFLAG = -mcpu=cortex-m3 -mthumb -Wall
CFLAG = -I./include/
$(BIN).bin: $(OBJS)
$(GCC)ld -T$(BIN).lds $^ -o $(BIN)_elf
$(GCC)objcopy -O binary -S $(BIN)_elf $(BIN).bin
$(GCC)objdump -D -m arm $(BIN)_elf > $(BIN).dis
ftp: $(BIN).bin
@chmod 0755 ./ftp.sh
@./ftp.sh
%.o : %.s
$(GCC)gcc $(GFLAG) $(CFLAG) -c -o $@ $<
%.o : %.S
$(GCC)gcc $(GFLAG) $(CFLAG) -c -o $@ $<
%.o : %.c
$(GCC)gcc $(GFLAG) $(CFLAG) -c -o $@ $<
clean:
rm -f *.o *elf *.bin *.dis *~ *bak
|