毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

交叉工具链编译ARM裸机程序出现除法时的问题

更新时间:2013-4-24:  来源:毕业论文

交叉工具链编译ARM裸机程序出现除法时的问题

话说用交叉工具链编译裸机时,出现了下面这样的错误。
clock.o: In function `get_PLLCLK':
clock.c:(.text+0x45c): undefined reference to `__aeabi_uidiv'
clock.o: In function `get_ARMCLK':
clock.c:(.text+0x4c0): undefined reference to `__aeabi_uidiv'
clock.o: In function `get_HCLK':
clock.c:(.text+0x570): undefined reference to `__aeabi_uidiv'
clock.o: In function `get_PCLK':
clock.c:(.text+0x608): undefined reference to `__aeabi_uidiv'

我见提示语是跟uidiv除法有关,因为clock.c文件中那几个函数(这些函数是获得系统时钟的)都出现了类似这样的语句:
return (m * (CONFIG_SYS_CLK_FREQ / (p * (1 << s))));
就是都用了除法。
猜测可能是ARM没有除法指令所以除法还得用库函数实现。在网上查了下果然如此,于是就在Makefile里改了编译选项,改后输出结果如下:机械厂35/366KV总降压变电所设计
CCFLAG is -I ./ -c
LDFLAG is -Bstatic -T my.lds -Ttext 0x0c000000 -nostdlib -L /opt/FriendlyARM/toolschain/4.5.1/ lib/gcc/arm-none-linux-gnueabi/4.5.1 -lgcc

按照网上多数网友的说法,下一步我应该马上遇到个raise标号的问题,我也希望剧情可以这样发展,因为这个raise的问题不难解决。但奇葩的是,我修改库路径和链接选项后,我的问题依然如故,还是显示找不到_aeabi_uidiv,怎么回事?我查看了我机子上交叉工具链里的 libgcc.map文件,发现里面确实有__aeabi_uidiv标号无误。但为毛还是被提示找不到除法呢?

应该是链接找不到符号,最大的可能是设置的链接库路径不对,使用arm-linux-gcc可以是因为使用arm-linux-gcc系统使用了默认的库,而arm-linux-ld没有自己使用默认的库 貌似是编译器的问题。。。。。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。