IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【编译错误】:对‘__aeabi_idivmod未定义的引用‘,对‘__aeabi_idiv‘未定义的引用 -> 正文阅读

[系统运维]【编译错误】:对‘__aeabi_idivmod未定义的引用‘,对‘__aeabi_idiv‘未定义的引用

参考博客:

解决undefined reference to `__aeabi_uidivmod\'和undefined reference to `__aeabi_uidiv\'错误-草根老师-ChinaUnix博客自己写裸机驱动程序时,使用了除法,在链接的时候出了如下错误:??使用的编译器是:??后来上网搜了一下原因,由于编译器不支持除法运算,但是也没有搜到解决方案。看了一下icon-default.png?t=M1L8http://blog.chinaunix.net/uid-26833883-id-3282967.html

1. 问题背景及源码

最近调试代码的时候遇到了以下的编译问题,查看网上的解决方法顺利解决,顺便自己记录一下

//#include <stdio.h>
/* in case compiler error */
#if 0
int raise(int param)
{
    return 0;
}
#endif

int mod(int a, int b)
{
    return (a % b);
}

int div(int a, int b)
{
    return (a / b);
}

int main(void)
{
    int a = 10;
    int b = 3;
    int c = 0;
    int d = 0;
    c = mod(a, b);
    d = div(a, b);
    return 0;
}

2. 问题原因

问题的原因其实报错信息中已经说出来了,在mod与div函数中使用了求余%与除法/运算,而编译器不支持上述两种运算,导致链接的时候找不到定义而报错

3. 解决方法

需要链接gcc库即可解决

如下是路径,只要在Makefile中指定即可

.PHONY:all
TARGET:=test
LDFLAGS:= -lgcc -L/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/lib/gcc/arm-linux-gnueabihf/4.9.4
objects = start.o main.o

all:$(TARGET).bin

$(TARGET).bin:$(objects)
	#arm-linux-gnueabihf-ld -Timx6u.lds -o $(TARGET).elf $^
	arm-linux-gnueabihf-ld -Timx6u.lds -o $(TARGET).elf $^ $(LDFLAGS)
	arm-linux-gnueabihf-objcopy -O binary -S $(TARGET).elf $@

%.o:%.c
	arm-linux-gnueabihf-gcc -nostdlib -c -o $@ $<

%.o:%.s
	arm-linux-gnueabihf-gcc -nostdlib -c -o $@ $<
	
clean:
	-rm -rf *.o *.bin *.elf *.imx

4. 新的报错

按照上述的改法链接的库以后,又出现了新的报错如下:

对raise函数未定义的引用

?解决方法是我们自己实现一个raise函数即可,如源码部分把条件编译放开即可,最终结果如下:

?

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 16:03:51  更:2022-02-28 16:06:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:23:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码