打印
[开发工具]

stmCubeIDE中log (x) 或 exp (x)在哪个文件里

[复制链接]
143|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jerry尧|  楼主 | 2025-4-1 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IDE, MCU, ST, STM, AI
如题
我在main.c中包含了math.h,还是提示函数未定义。

log (x) 或 exp (x)在哪个文件中定义?

使用特权

评论回复
沙发
onlycook| | 2025-4-1 12:19 | 只看该作者
用 STM32CubeMX 工具重新生成项目配置,并择正确的库和设置。

使用特权

评论回复
板凳
七毛钱| | 2025-4-1 16:20 | 只看该作者
检查项目属性中的编译器和链接器是否设置为包含数学库。

使用特权

评论回复
地板
公羊子丹| | 2025-4-2 07:44 | 只看该作者
你编译的时候有加上 -lm 选项吗?math.h 里的数学函数需要链接数学库。

使用特权

评论回复
5
周半梅| | 2025-4-2 07:45 | 只看该作者
这些数学函数一般是在 libm.a 里实现的,你检查下工程的链接设置看看是否包含了数学库。

使用特权

评论回复
6
帛灿灿| | 2025-4-2 07:46 | 只看该作者
试试 logf(x) 或 expf(x),有时候 float 版本的函数会更容易链接成功。

使用特权

评论回复
7
童雨竹| | 2025-4-2 07:47 | 只看该作者
你用的是 STM32CubeIDE 里的 GCC 编译器吗?如果是,检查下 Project Properties 里面的 Libraries 选项。

使用特权

评论回复
8
万图| | 2025-4-2 07:48 | 只看该作者
试着在 main.c 里手动加上 -lm 选项,比如 #pragma comment(lib, "m"),看看是否有用。

使用特权

评论回复
9
Wordsworth| | 2025-4-2 07:49 | 只看该作者
你可以在 math.h 里搜索 log 和 exp,看看它们的定义是不是有 extern,如果有,那说明它们在库里实现了。

使用特权

评论回复
10
Bblythe| | 2025-4-2 07:50 | 只看该作者
你的 printf 结果正常吗?有些时候 newlib 版本的问题也可能导致某些数学函数不可用。

使用特权

评论回复
11
Pulitzer| | 2025-4-2 07:50 | 只看该作者
可以用 nm 或 objdump 工具看看 libm.a 里面有没有 log 和 exp 相关的符号。

使用特权

评论回复
12
Uriah| | 2025-4-2 07:52 | 只看该作者
你用的是哪个 STM32 系列?有些低端型号的 newlib-nano 可能默认不包含完整数学库。

使用特权

评论回复
13
Clyde011| | 2025-4-2 07:53 | 只看该作者
试试 -u _printf_float 这个选项,有时候 STM32 的 newlib-nano 版本默认裁剪掉了浮点运算支持。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

10

帖子

0

粉丝