|
根据网上教程,我下载并配置了VSCODE,安装了GNU ARM 编译器、Make、openocd,完成了开发环境的建立。
通过STM32CubeMX生成Makefile工程,在VSCODE中打开工程所在文件夹,输入make命令可以顺利完成编译,且调试也可以成功。
接下来,我在这个工程的基础上,增加了ThreadX和emWin(库文件,.a扩展名),在原Makefile中添加了C和ASM源文件以及头文件路径,并在以下链接配置处:
LIBS = -lc -lm -lnosys
LIBDIR =
LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
增加了上述库文件,变成:
LIBS = -lc -lm -lnosys
LIBDIR =
LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
LDFLAGS += GUI/Lib/libGUI_v7em_fpv4_sp_d16_hard_OS1.a
make的时候提示以下错误信息:
C:/Program Files (x86)/Arm GNU Toolchain arm-none-eabi/13.3 rel1/bin/../lib/gcc/arm-none-eabi/13.3.1/../../../../arm-none-eabi/bin/ld.exe: GUI/Lib/libGUI_v7em_fpv4_sp_d16_hard_OS1.a(GUI_Valf.o): in function `GUI_DispFloat':
GUI_Valf.c .text.GUI_DispFloat+0x86): undefined reference to `ceilf'
collect2.exe: error: ld returned 1 exit status
make: *** [Makefile:509: Output/GNU.elf] Error 1
请教大家:
1. LDFLAGS += GUI/Lib/libGUI_v7em_fpv4_sp_d16_hard_OS1.a,这种方式加入静态库是否正确?
2. 百度undefined reference to `ceilf',说ceilf是一个在math.h里面的数学方法,需要在编译的时候加上-lm参数,可明明已经加上了,为什么不行呢?
|
|