gcc编译RTT,STM32L4平台 math如何加入,急

发表在 Kernel2019-11-8 14:25 [复制链接] 14 508

本帖最后由 znmcu123 于 2019-11-8 14:28 编辑
% K: p1 B  \, N* [
; O! r  a7 d% c  b/ `% s: G; M9 {8 i4 U, O8 }$ R" j
使用scons进行构建,gcc
9 [5 H# t5 T% R: \% x, V  Z在rtconfig.py中如上图,在LFFLAGS,末尾增加了-lm: i4 a# H' q! S" c" W) i# h
在相应的rtthread.map中,有看到5 U! m5 Q, F  ]
企业微信截图_157319054822.png $ p- R5 e, ?$ Q
这应该是libm.a已经加入到了LINK中了
2 _& w% p2 y8 k: e3 W9 ~) L然后我在程序中去#include <math.h>,调用sin
+ ~  N+ G& N) p找不到函数/ \3 j$ y8 u) z! G# x* N$ l6 @- i* I
企业微信截图_15731942403291.png
3 {# F" @; v/ Z 企业微信截图_15731941953718.png + X* g6 [# d# {$ i2 Q0 y+ [) x% ]
: p3 q6 c1 }' |. p% n  u
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-11-8 14:26:50 | 显示全部楼层
这个问题已经卡了1天,不明白为什么?
使用道具 举报 回复
发表于 2019-11-8 14:29:20 | 显示全部楼层
用的什么 C 库? newlib 打开了吗
使用道具 举报 回复
发表于 2019-11-8 14:35:25 | 显示全部楼层
打开了,了解,在gcc下是要用newlib的 222.png 8 {4 o8 G# I8 `& R( Z( K
使用道具 举报 回复
发表于 2019-11-8 15:38:57 | 显示全部楼层
顶上顶上顶上顶上顶上
使用道具 举报 回复
发表于 2019-11-8 16:07:08 | 显示全部楼层
Snipaste_2019-11-08_16-05-26.png " V  {( h& |: s
, D$ m  U1 K  B5 J
最新的 master 代码 stm32l475-atk-pandora 上 scons 是可以通过$ o& M( x5 p2 M& A$ N
使用道具 举报 回复
发表于 2019-11-8 17:34:55 | 显示全部楼层
我按您的方法,重新下载一份rtt,然后通过gcc编译,调用sin是OK的因为用的是minilib,里面有math.c,有sin的实现,而不是链接的libm.a+ q# t. _% t% N9 x

3 o, \; r) r% D) s  h: J$ r对于除了sin cos之外的数学函数,如pow等,仍然是会报错的
, u) }: l2 u0 v% T
. j; q3 j6 A4 l. B) Z1 C+ z2 Q ssss.png / U/ s/ g2 h2 B+ y5 \# b
ddd.png
6 p3 \( U4 W9 [8 P
使用道具 举报 回复
发表于 2019-11-8 17:39:54 | 显示全部楼层
基于官方的全新的工程,pandora. R  ]1 R7 V* }" f: d8 h6 I
我在main中调用math.h中的pow,会编译找不到# ]3 {( h* s- m! q& C: w$ ?, X+ D
在rtconfig.py中添加了-lm,在map中看到有LOAD libm.a这一条0 ?1 W) n1 X- g. s7 B3 T
fff.png - d; n7 W. p6 ]0 Y( l
kkk.png 5 V5 j) @+ q! W# B
使用道具 举报 回复
发表于 2019-11-8 18:28:32 | 显示全部楼层
可以看下 newlib 中是否有 pow 这个接口
使用道具 举报 回复
发表于 2019-11-8 18:51:39 | 显示全部楼层
5555.png
4 n. G9 L3 J" z' i% J
: I3 k+ ~# V4 m) n' L# }3 qnewlib中,没有数学库,只有几个文件而已, N7 k/ [+ a$ P1 m# Z3 Z
使用道具 举报 回复
发表于 2019-11-8 20:14:51 | 显示全部楼层
znmcu123 发表于 2019-11-8 18:51* g/ O$ K8 b6 e9 j
newlib中,没有数学库,只有几个文件而已
; A4 @( C9 [& G0 Z
不是看这里的,这里只是一些系统桩,应该看 newlib 库本身
使用道具 举报 回复
发表于 2019-11-9 09:08:48 | 显示全部楼层
znmcu123 发表于 2019-11-8 17:34
6 k: O* p7 Q$ k% B1 e/ P+ E* o我按您的方法,重新下载一份rtt,然后通过gcc编译,调用sin是OK的因为用的是minilib,里面有math.c,有sin ...

, A  f9 H& W9 o3 \; P编译的时候是会提示 pow 这个函数没有找到,,,,
使用道具 举报 回复
发表于 2019-11-9 09:45:35 | 显示全部楼层
tyustli 发表于 2019-11-9 09:08: G2 p' w# I8 H6 b" q# x: {. _
编译的时候是会提示 pow 这个函数没有找到,,,,

, i6 q, S, T, ?2 a  X网上找段代码,自己实现一个吧
使用道具 举报 回复
发表于 2019-12-30 16:26:22 | 显示全部楼层
楼主 你是怎么解决的
使用道具 举报 回复
发表于 2020-1-10 10:59:59 | 显示全部楼层
求解,这个用newlib管用么
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 9 主题
  2. 127 帖子
  3. 127 积分

Ta的主页 发消息

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

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