arm-linux-gcc 4.4.3版本解决`__aeabi_uidivmod'和 `__aeabi_uidiv'问题方法
学习ARM裸机过程中。
在linux-gcc 4.4.3编译器 进行arm-linux-ld命令链接时出现错误
__aeabi_uidivmod和 __aeabi_uidiv`问题
查询网上主要是不支持硬件除法,缺少libgcc.a等问题。
具体的解决方法如下:
方法1:
如下图执行make编译链接,执行链接步骤时报错.
main.o: In function `out_num':
main.c:(.text+0x140): undefined reference to `__aeabi_uidivmod'
main.c:(.text+0x170): undefined reference to `__aeabi_uidiv'
1.在makefile上面 添加链接libgcc.a路径
-lgcc -L /home/menhao/arm/opt/FriendlyARM/toolschain/4.4.3/lib/gcc/arm-none-linux-gnueabi/4.4.3
例:
arm-linux-ld -Ttext 0 -Tdata 0xe80 start.o led.o uart.o lib1funcs.o my_printf.o main.o -o uart.elf -lgcc -L /home/menhao/arm/opt/FriendlyARM/toolschain/4.4.3/lib/gcc/arm-none-linux-gnueabi/4.4.3
具体路径一般自己编译器安装路径。自己寻找一下。
2.修改后,再make一下会出现下面一个错误
__div0: raise
3.找到工程用到的任意一个C源文件中添加一个 raise 空函数
int raise(int a)
{
return 0;
}
4.再make一下…生成了.bin文件…问题解决了。
方法2:
1.去对应库目录直接取得libgcc.a
2.和编译的文件放到一起 在makefile文件中直接一起链接上
3.同样找到工程用到的任意一个C源文件中添加一个 raise 空函数
int raise(int a)
{
return 0;
}
4.同样没有问题
成功编译并连接。
烧录开发板没有任何问题运行正常。
到此结束