解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误
2012-11-25 12:35
483 查看
转自:http://blog.chinaunix.net/uid-26833883-id-3282967.html
自己写裸机驱动程序时,使用了除法,在链接的时候出了如下错误:
使用的编译器是:
后来上网搜了一下原因,由于编译器不支持除法运算,但是也没有搜到解决方案。看了一下代码确实用到了除法,把除法去掉可以正常连接通过。后来想了想了,之前编译内核和编译u_boot都是这个编译器的呀,他们肯定有除法运算呀,他们是怎么做到的呢?
于是看了一下u_boot的Makefile,很晕,东西很多,后来编译了一下,看到了这个:
u_boot在链接的时候,指定了***颜色的路径和-lgcc选项(-l后面的是链接库的名字)
到指定的目录下看到如下内容:
里面有一个libgcc.a的静态库,编译器支持软浮点,猜想软浮点的实现应该就是在找个静态库中。
在自己的Makefile里面加上了这些东西,继续编译连接出现如下错误信息:
缺少"raise符号",在u_boot源码中搜索"raise"如下:
是一个函数,什么也没干,我在自己的代码中写了一个这样的空函数,编译通过。
Makefile 如下:
总结:
ARMv4t的ARM核不支持浮点运算,为了让其支持浮点运算,编译器使用了软浮点的方法,但是需要相应的除法库支持,在连接的时候需要指定其路径和库名。
一句经典名言: 在IT行业,遇到问题,只要一直解决,总有解决的一天。
自己写裸机驱动程序时,使用了除法,在链接的时候出了如下错误:
使用的编译器是:
后来上网搜了一下原因,由于编译器不支持除法运算,但是也没有搜到解决方案。看了一下代码确实用到了除法,把除法去掉可以正常连接通过。后来想了想了,之前编译内核和编译u_boot都是这个编译器的呀,他们肯定有除法运算呀,他们是怎么做到的呢?
于是看了一下u_boot的Makefile,很晕,东西很多,后来编译了一下,看到了这个:
u_boot在链接的时候,指定了***颜色的路径和-lgcc选项(-l后面的是链接库的名字)
到指定的目录下看到如下内容:
里面有一个libgcc.a的静态库,编译器支持软浮点,猜想软浮点的实现应该就是在找个静态库中。
在自己的Makefile里面加上了这些东西,继续编译连接出现如下错误信息:
缺少"raise符号",在u_boot源码中搜索"raise"如下:
是一个函数,什么也没干,我在自己的代码中写了一个这样的空函数,编译通过。
Makefile 如下:
总结:
ARMv4t的ARM核不支持浮点运算,为了让其支持浮点运算,编译器使用了软浮点的方法,但是需要相应的除法库支持,在连接的时候需要指定其路径和库名。
一句经典名言: 在IT行业,遇到问题,只要一直解决,总有解决的一天。
相关文章推荐
- 解决undefined reference to `__aeabi_uidivmod'、 `__aeabi_uidiv'错误
- 解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误
- 解决undefined reference to `__aeabi_uidivmod'、 `__aeabi_uidiv'错误
- 解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误
- undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误
- 解决undefined reference to `__aeabi_uidiv'错误
- error: undefined reference to '__aeabi_uidiv'
- error:undefined reference to `coloured_LED_init'及相关错误时的解决办法!
- Dev C++中的错误的解决[Linker error] undefined reference to `__dyn_tls_init_callback'
- 编译Ralink SDK时碰到的奇怪错误(undefined reference to `main')的解决办法
- 解决undefine reference to '__aeabi_idiv' undefine reference to '__aeabi_idivmod'错误
- Uboot编译出下如下错误的一个原因:In function `__aeabi_ldiv0': (.text+0x8): undefined reference to `raise'
- cocos2d-x发生undefined reference to `XX'错误 一劳永逸解决方法
- undefined reference to `clock_gettime' 链接错误问题解决
- glibc静态链接 libc.a(nsswitch.o)(.data+0x64):undefined reference to `_nss_files_getaliasent_r' 错误解决方法
- GCC编译uboot出现(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'错误的解决办法
- 解决webrtc2sip编译出现错误undefined reference to symbol 'dlopen@@GLIBC_2.1'
- sqlite3 交叉编译 undefined reference to `fdatasync' 错误解决
- 交叉编译中出现的 'Undefined reference to __aeabi_read_tp' 错误
- undefined reference to `pthread_create'错误通过makefie的解决方法