mips-elf-gcc中添加math.h的方法

来源:互联网 发布:门淘宝网 编辑:程序博客网 时间:2024/05/16 02:24

来公司一个月了,负责一个基于Mips架构的OBD模块的二次开发。编译环境是windows xp +cygwin+mips-elf-gcc 。由于做的是二次开发,项目中的lib和头文件都由对方公司所提供。现在代码用要用到一个math.h中的sin, cos,acos函数。奈何对方的lib中没有,怎么办呢。由于网上相关的资料不多,我就想把自己的收获和大家分享一下。

      曾经用泰勒公式实现过,奈何优化太差,级数收敛很慢,达不到使用的精度要求。后又在公司同事的推荐下看了uclibc的源码,有了点收获,这我打算另写一篇详细讨论。

      作为一个刚接触嵌入式的初学者,我对交叉编译和库文件的概念不熟是我无法很快地解决这个问题的关键所在。因此这里要强调的是,不同架构下所用的库文件必须是经过交叉编译生成为目标代码的库文件。换句话说,mips下所能识别的库文件必须是经过mips-elf-gcc编译得到的。因此你直接把/user/include/math.h和/lib/libm.a拿来是没有任何作用的,它们的库文件上的目标代码只能为x86平台所识别。

      弄清楚了这个概念,我也顺利地解决了这个问题。

     最直接的思路。找mips编译工具下的math.h头文件,并将mips下所有的lib拷贝至工程目录下(当然你也可以在编译的时候选定lib目录)。

      


   最后修改makefile中的inclue变量和ld变量的参数

  -I  C:/CSDTK/cygwin/crosscompiler/mips-elf/sys-include

  -ld  x x.o -lstdc++ -lsupc++ -liberty -lssp -lssp_nonshared


  编译成功!


//*****************************************************************************************************************/

以为编译成功了,其实没有成功。只不过把编译优化打开了,有些数值计算编译器直接给出答案了,所以还是没有解决这个问题。

  

0 0
原创粉丝点击