首页 > 学院 > 开发设计 > 正文

Xilinx SDK 编译包含有sin, cos, or tan 等数学函数时如何成功编译

2019-11-14 09:21:22
字体:
来源:转载
供稿:网友

 http://www.360doc.com/content/16/0406/19/18252487_548394259.shtml

Xilinx SDK 编译包含有sin, cos, or tan 等数学函...

2016-04-06  mzsm  文章来源  阅 161  转 1转藏到我的图书馆微信分享:

问题描述:

在Vivado SDK中,使用了math函数库中的三角函数,如下所示。虽然在头部包含了“math.h”头文件,编译时SDK工具仍然提示找不到sin函数。

                            

 

Note:其实不管是Vivado还是ISE,哪个版本的SDK使用者都可能会碰到类似的问题,有兴趣的读者可以亲自试验下。

 

那么这到底是什么问题呢?

其实是GCC工具链的库函数默认路径的问题。从网上搜了下,gcc的sin函数是定义在libm.so里面了。用-l选项定义指定的路径。不填写的话默认是/lib和/usr/lib内。因为linux下所有的函数库都是以lib开头的。所以除去头和尾,那么m就是代表libm.so(m是库名,libm.so是库文件名)在使用“-l”参数时,通常的习惯是除去“lib”函数库头和后面的版本号,使用库名和参数“-l”连接,形成“-lm”。于是,我们需要在gcc找不到库时,可是使用“-l”直接给定库名。

虽然我们可能是裸跑的程序,但也是适用上述解释的。

 

解决办法:

需要在C/C++Build Settings中加上'm'选项:

 

参考:AR#52971  14.4 - SDK - ARM Compiler isfailing with applications containing sin, cos, tan functions in SDK


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表