硬汉嵌入式论坛

 找回密码
 立即注册
查看: 623|回复: 3
收起左侧

[emWin] 求助:GNU编译含库文件工程的问题

[复制链接]

2

主题

26

回帖

32

积分

新手上路

积分
32
发表于 2024-9-4 08:52:16 | 显示全部楼层 |阅读模式
根据网上教程,我下载并配置了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参数,可明明已经加上了,为什么不行呢?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2024-9-5 08:52:53 | 显示全部楼层
1、换一个库试试libGUI_v7m_OS1.a
2、C库的这个函数,按说添加了头文件应该就没问题的。
回复

使用道具 举报

2

主题

26

回帖

32

积分

新手上路

积分
32
 楼主| 发表于 2024-9-6 09:00:50 | 显示全部楼层
问题已解决。
Makefile中添加静态库的方式如下:
LIBS = -lc -lm -lnosys
LIBDIR =
LDFLAGS = GUI/Lib/libGUI_v7em_fpv4_sp_d16_hard_OS1.a
LDFLAGS += $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections,--no-warn-rwx-segments

与之前相比,改变了添加的位置。
还是对make的规则不清楚,目标文件需要依赖的库应确保放在前面。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
116230
QQ
发表于 2024-9-6 09:39:18 | 显示全部楼层
zouhp 发表于 2024-9-6 09:00
问题已解决。
Makefile中添加静态库的方式如下:
LIBS = -lc -lm -lnosys

谢谢告知最终问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-11 06:06 , Processed in 0.359778 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表