嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误

学习ARM裸机开发的过程中
在linux-gcc 4.4.3编译器中进行编译的时候出现了报错
报错内容为__aeabi_uidivmod和 __aeabi_uidiv
通过查询了解到主要是因为编译器不支持硬件除法运算,缺少libgcc.a静态库等问题。

嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误_第1张图片

解决方法如下:

方法一:

1.去对应的目录找到 libgcc.a 文件,输入命令【locate libgcc.a】就可以查找到文件的路径
嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误_第2张图片
2.复制该文件到编译文件夹内
嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误_第3张图片
3.在Makefile文件中链接上 libgcc.a 文件
嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误_第4张图片
4.找到工程中用到的任意一个C源文件,在其中添加一个 raise 空函数

int raise(int a)
{
	return 0;
}

5.进入Ubuntu终端输入make编译文件,编译成功无报错,生成了目标.bin文件,问题解决
嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误_第5张图片

方法二:

1.在Makefile中添加链接libgcc.a路径(通过 【locate libgcc.a】 可以查找到对应文件的路径)
-lgcc -L /usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2
嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误_第6张图片
在Makefile中添加以下语句

arm-linux-ld -Ttext 0 start.o led.o uart.o main.o my_printf.o lib1funcs.o -o uart.elf -lgcc -L /usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2

嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误_第7张图片
2.找到工程中用到的任意一个C源文件,在其中添加一个 raise 空函数

int raise(int a)
{
	return 0;
}

3.进入Ubuntu终端输入make编译文件,编译成功无报错,生成了目标.bin文件,问题解决
嵌入式Linux学习笔记9——解决undefined reference to `__aeabi_uidivmod'和undefined reference to `__aeabi_uidiv'错误_第8张图片

你可能感兴趣的:(嵌入式Linux学习笔记)