取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
joke080
Visitor
Visitor
684 次查看
注册日期: ‎09-16-2020

使用SDK2017.4制作静态库时用到数学库函数,链接静态库时报错

D:\work_acu\program\axi_bsp_top_2020117\sdk\acu_z7045cpu1_rtos\algorithm\libnav_track.a(mdl_calc_nav.o): In function `Nav_YawSet':
D:\work_acu\program\axi_bsp_top_2020117\sdk\nav_track\Debug/../src/mdl_calc_nav.c:501: undefined reference to `fmod'

如下图所示,基本所有的数学库函数都报未定义,但是制作静态库时编译也没有给出任何警告或错误。是不是制作静态库的时候没有引用数学库的缘故呢?但是又不知道如何设置引用数学库。

joke080_0-1615630364051.png

 

0 项奖励
13 回复数
joke080
Visitor
Visitor
627 次查看
注册日期: ‎09-16-2020

手动置顶。。。。望有相似经历的工程师不吝赐教啊!

0 项奖励
terryn
Xilinx Employee
Xilinx Employee
623 次查看
注册日期: ‎06-19-2019

看一下你 C/C++ build setting中的gcc liker的libraries中是否添加了math库。

Capture49.PNG

 

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
joke080
Visitor
Visitor
594 次查看
注册日期: ‎09-16-2020

您好,感谢回复。

我制作静态库时,没有添加数学库,在sdk的编译选项里,没有找到可以添加库的地方。但是编译没有报错。静态库编译选项可供编辑的部分如下:

joke080_0-1615790619842.png

 

我在项目工程里链接上述静态库时,添加了数学库的,如下图所示,但是仍然报错。

joke080_1-1615790973652.png

 

 

0 项奖励
terryn
Xilinx Employee
Xilinx Employee
578 次查看
注册日期: ‎06-19-2019

撇开你的静态库,你包含了math库以后,在你主程序中,能正常执行sin,cos这些吗?

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
terryn
Xilinx Employee
Xilinx Employee
567 次查看
注册日期: ‎06-19-2019

我在SDK中试了一下,是能够正常编译完成的。没有报error。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
joke080
Visitor
Visitor
476 次查看
注册日期: ‎09-16-2020

您好,如果把静态库的源代码加到项目工程里直接编译,是没问题的。

就是生成库在链接是会报错

0 项奖励
terryn
Xilinx Employee
Xilinx Employee
464 次查看
注册日期: ‎06-19-2019

你用的是什么版本的SDK。

我用2019.1,和你类似的方法。创建了一个静态库包含一个sin的自定义函数。然后在应用程序引用,并设置了m的库。能正常编译。

另外,你确认一下在compiler的directories选项中是否把源也添加进去了.

Capture50.PNG

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
joke080
Visitor
Visitor
424 次查看
注册日期: ‎09-16-2020

您好,我用的是2017.4,你说的directories选项是要包含什么源呢?静态库文件还是头文件呢?

0 项奖励
terryn
Xilinx Employee
Xilinx Employee
420 次查看
注册日期: ‎06-19-2019

静态库源文件所在的文件夹。

你可以用2019.1版本的SDK尝试一下。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
joke080
Visitor
Visitor
264 次查看
注册日期: ‎09-16-2020

h你好,已经做成了静态库,工程引用该库的时候,为什么还要去包含库的源文件呢?那该如何将库脱离源码交给第三方使用呢?

0 项奖励
joke080
Visitor
Visitor
155 次查看
注册日期: ‎09-16-2020

您好,我用2018.3试了一下,也不行,难道一定要去包含库的源文件路径吗?关键是提示找不到数学库里的函数。。。

0 项奖励
joke080
Visitor
Visitor
139 次查看
注册日期: ‎09-16-2020

您好,您能帮忙试一下“asin”和“fmod”这两个函数吗,我这里发现就这两个函数不行。。。。

0 项奖励
shengjie
Moderator
Moderator
69 次查看
注册日期: ‎07-01-2019

请勿重发发帖,解决方案见此贴:

https://forums.xilinx.com/t5/%E5%B5%8C%E5%85%A5%E5%BC%8F-%E5%B7%A5%E5%85%B7-%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91/%E8%AF%B7%E6%95%99%E4%BD%BF%E7%94%A8SDK%E5%88%B6%E4%BD%9C%E5%92%8C%E4%BD%BF%E7%94%A8%E9%9D%99%E6%80%81%E5%BA%93%E9%81%87%E5%88%B0%E7%9A%8...

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励