我的情况很奇怪。每次我尝试编译我的arm项目(LPC2378,codesourcery arm-none-eabi-gcc-4.5.1)时,我在链接时都会遇到相同的错误
/media/data/Projects/arm/uart/main.c:39: undefined reference to `__aeabi_uidiv'
/media/data/Projects/arm/uart/main.c:40: undefined reference to `__aeabi_uidiv'
有问题的代码如下所示:
U0DLL = ((((PLLCFG & 0x7FFF) + 1) * F_OSC) / ((((PLLCFG & (0xFF << 16)) >> 16) + 1) * ((CCLKCFG & 0xFF) + 1) * 8 * BAUD * 1)) % 256;
U0DLM = ((((PLLCFG & 0x7FFF) + 1) * F_OSC) / ((((PLLCFG & (0xFF << 16)) >> 16) + 1) * ((CCLKCFG & 0xFF) + 1) * 8 * BAUD * 1)) / 256;
我已经四处搜索,这可能是由什么原因引起的,AFAICT,没有使用 LD 的 lgcc 和 lc 选项。我已经解决了这个问题,但错误仍然存在。
完整的项目可以是在我的 github 仓库中找到.
如果有人能提供帮助,我们将不胜感激。干杯。
ARM 系列 CPU 没有原生整数除法指令。因此,除法需要通过库函数来实现。 GCC 知道这一点,并创建对(在您的情况下)的引用__aeabi_uidiv
(for unsigned int
分配)。
您将需要链接到包含此函数的适当的运行时支持库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)