我有一個使用 STM32F103C8T6 的專案。它有樹:
__main.c
|__main.h
|__led.c
|__led.h
|__stm32f1xx_startup.c
|__Makefile
我正在使用 arm-none-eabi-gcc 來編譯這個專案。Makefile如下:
CC = arm-none-eabi-gcc
MARCH = cortex-m3
CFLAGS = -c -mcpu=$(MARCH) -mthumb -std=gnu11 -Wall -O0
RM = rm -rf
OBJS = $(patsubst %.c,%.o,$(wildcard *.c))
INCS = $(wildcard *.h)
all: $(OBJS)
$(CC) $(CFLAGS) $< -o $@
%.o: %.c %.h
$(CC) $(CFLAGS) $< -o $@
.PHONY: clean
clean:
$(RM) *.o all
當我make通過 VS Code 的終端運行命令時,它不會生成執行檔案并有如下警告:
minh@Minh:~/Workspaces/Stm32/BeraMetal$ make
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -std=gnu11 -Wall -O0 main.c -o main.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -std=gnu11 -Wall -O0 -c -o stm32f1xx_startup.o stm32f1xx_startup.c
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -std=gnu11 -Wall -O0 led.c -o led.o
arm-none-eabi-gcc -c -mcpu=cortex-m3 -mthumb -std=gnu11 -Wall -O0 main.o -o all
arm-none-eabi-gcc: warning: main.o: linker input file unused because linking not done
請告訴我如何修復它?先謝過。
uj5u.com熱心網友回復:
編譯成目標檔案時使用相同的標志,就像嘗試將目標檔案鏈接在一起一樣。
問題是鏈接命令將使用-c用于構建目標檔案的標志。
您需要將編譯和聯結器標志分開。或至少不指定-c在CFLAGS。
uj5u.com熱心網友回復:
我該如何解決?
不要傳遞-c到鏈接階段。此外,您必須將所有物件傳遞給聯結器。
CFLAGS = -mcpu=$(MARCH) -mthumb -std=gnu11 -Wall -O0
all: $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
%.o: %.c %.h
$(CC) $(CFLAGS) -c $< -o $@
考慮使用比爺爺 Make - 更新的東西CMake Scons Meson。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/322589.html
上一篇:C中N個自然數的總和
