WMP100的开发,真是举步维艰,寸步前行。虽然越来越顺手,但还是不断碰到奇怪的问题。想是想不通的,百度一下,还是不知道的,Google里也冒不了几个泡。就说数学函数在OPEN AT中的使用,就让我很是郁闷了一阵。好在今天终于解决了,在这里留个记号。当然最好是WAVECOM能出一个关于OPENAT的FAQ,方面广大开发者参考,不要让这些小问题再成为我们的大麻烦。^_^
要想在OPENAT的应用程序中使用如sqrt()、cos()等数学函数,首先需要包括头文件math.h,但只包括该头文件,编译链接时依然会有警告信息,如下:
appli.c: In function 'adl_main':
appli.c:88: warning: incompatible implicit declaration of built-in function 'sqrt'
在网上找了很久,都说是要在链接选项中添加-lm,可就是不知道在什么地方加。开始以为是IDE的问题,于是从Eclipse换成VC6.0,但依然没解决。尝试修改mak文件,也不成功。最后终于在Wavecom的开发论坛中找到了05年的一个老帖子,其中介绍了解决办法。这里针对OPENAT OS(6.10.05)做一个更新。
首先在Open AT Project Wizard设置界面中的“wmnew script additional options”输入
-inc "C:\OpenAT\IDE\GCC\4.0.1.2\arm-elf\lib",截图如下:
然后打开工程目录下的mak文件(math.mak),找到如下所示代码,
#----------------------------------------------------------------
# List of libraries real names to use for making binary file
#----------------------------------------------------------------
EXTERNAL_LIB_LIST = \
在后面添加如下代码,
C:/OpenAT/IDE/GCC/4.0.1.2/arm-elf/lib/thumb/interwork/libm.a \
这样再编译,就不会有问题了。