在本地编译使用的是gcc,交叉编译我改为了arm-linux-gcc,,其他的库文件,链接编译选项则完全一致。
gcc本地编译链接后,运行都正确!
交叉编译arm-linux-gcc也没有任何的错误信息或者警告,就是下载到开发板之后,可以运行,并且不报错,就是运行结果不正确,开方函数sqrt(..)的结果均等于0.0000.乘方函数pow(..)的结果均等于1.0000
另外说明:主机本地的数据库为/lib/libm.so.6,目标板上面的数学库也是 /lib/libm.so.6.
简单起见,我把代码中最核心的抽取出来,如下:
#include<stdio.h>
#include<math.h>
void main()
{
double a=8.37456,b=0.0;
b=sqrt(a);
printf("sqrt(8.37456)=%f\n",b);
b=pow(a,2);
printf("pow(8.37456,2)=%f\n",b);
}
编译选项为: arm-linux-gcc -o mathtest main.c -lm
无任何警告信息或者错误,成功后将mathtest 下载到开发板,运行之,输出的结果(无错误警告信息)为:
sqrt(8.37456)=0.0000
pow(8.37456,2)=1.0000