我下载了libopencm3 (https://github.com/libopencm3/libopencm3)库并编译了它。啊,真灵。我找到了一个使用这个库的小项目,并从它的makefile中复制了说明。
all:
arm-none-eabi-gcc \
-Os \
-ggdb3 \
-mthumb \
-mcpu=cortex-m0 \
-msoft-float \
-Wall \
-Wextra \
-Wundef \
-Wshadow \
-Wredundant-decls \
-fno-common \
-ffunction-sections \
-fdata-sections \
-std=c11 \
-MD \
-DSTM32F0 \
-I./libopencm3/include \
-o main.o \
-c main.c
arm-none-eabi-gcc \
--static \
-nostartfiles \
-Tstm32f0.ld \
-mthumb \
-mcpu=cortex-m0 \
-msoft-float \
-ggdb3 \
-Wl,-Map=main.map \
-Wl,--cref \
-Wl,--gc-sections \
-L./libopencm3/lib \
main.o \
-lopencm3_stm32f0 \
-Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group \
-o main.elf我为该项目创建了一个文件夹,并在其中粘贴了libopencm3文件夹并进行了编译。它起作用了,但我不明白这部分是怎么工作的:
-L./libopencm3/lib main.o -lopencm3_stm32f0如果我是对的,那么在/libopencm3/lib中查找/libopencm3/lib库是指导性的,但是在那个文件夹中,我找到了libopencm3_stm32f0.a。
我想知道为什么他们更改了名称,省略了扩展名,但它仍然有效。
发布于 2022-08-07 19:12:34
这与makefile、任何特定库或嵌入式系统无关,因此不需要在您的问题上使用这些标记。
如果查找链接器的-l选项在文件中,您将了解它是如何工作的。
https://stackoverflow.com/questions/73270294
复制相似问题