在Windows下自制ARM交叉编译工具链

news/2024/4/30 12:42:33/文章来源:https://blog.csdn.net/qq_44823010/article/details/127214340

参考链接:gnu工具链

1.Download MinGW and MSys packages.

安装MSys

参考此链接https://www.msys2.org/安装,注意只需要安装即可。
请添加图片描述

安装开发环境,设置镜像,需要进入安装路径中的/etc/pacman.d/进行修改

// /etc/pacman.d/mirrorlist.mingw32
Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686// /etc/pacman.d/mirrorlist.mingw64
Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64// /etc/pacman.d/mirrorlist.msys
Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch// /etc/pacman.d/mirrorlist.ucrt64
Server = http://mirrors.ustc.edu.cn/msys2/mingw/ucrt64

修改好上述文件后,重启MSYS,执行以下命令安装基本开发环境:

// Update the package database and base packages
pacman -Syu

然后再次重启MSYS,执行以下命令:

// Update the rest of the base packages 
pacman -Su// install some tools and the mingw-w64 GCC
pacman -S --needed base-devel mingw-w64-x86_64-toolchainpacman -S mingw-w64-x86_64-gcc// gcc安装在mingw64\bin目录
export PATH=/mingw64/bin:$PATHpacman -S mingw-w64-x86_64-SDL2
pacman -S mingw-w64-x86_64-glib2
pacman -S mingw-w64-x86_64-winpthreads-git mingw-w64-x86_64-libwinpthread git
pacman -S mingw-w64-x86_64-pixman
pacman -S git
pacman -S mingw-w64-x86_64-capstone

2.创建目录

在随意目录下创建gnu文件夹,在gnu目录下创建out文件夹

3.进入http://ftp.gnu.org/gnu/binutils/,往下拉查找到最新的tar.bz2结尾的包,下载,并将下载文件复制到gnu目录下。
请添加图片描述

4.打开MSYS2

请添加图片描述

5.进入gnu目录

请添加图片描述

6.解压下载的binutils包,新建build文件夹,并进入该文件夹

请添加图片描述

7.注意第10步需要修改2.39为自己的版本号,且命令为一整行命令。

../binutils-2.39/configure --target arm-eabi --enable-win32-registry=MyToolchainName --prefix /c/gnu/out

请添加图片描述

8.编译

make -j16

请添加图片描述

9.安装输出到out目录

make install-strip

在这里插入图片描述

10 下载gcc包http://ftp.gnu.org/gnu/gcc/

在这里插入图片描述

选择11.3.0版本的包,高版本的gcc包存在bug。

11 使用ie浏览器打开此链接ftp://sourceware.org/pub/newlib/,下载下图中3.1.0newlib包

如果打不开可选择打开newlib库,再选择newlib
在这里插入图片描述

12.准备工作

mkdir gcc-11.3.0-build

在这里插入图片描述

在MSYS2中进入gcc-11.3.0-build目录

cd gcc-11.3.0-build

在MSYS2中解压下载的包

tar -xzvf <包名>

如:

tar -xzvf gcc-11.3.0.tar.gz
tar -xzvf newlib-3.1.0.tar.gz

添加环境变量

export TARGET="arm-eabi"
export PATH="/d/gnu/out/bin:$PATH"

注意/d/gnu/out/bin为自己电脑中/gnu/out/bin目录

13 配置gcc

../gcc-11.3.0/configure --target arm-eabi --enable-win32-registry=MyToolchainName --prefix /d/gnu/out/ --enable-languages=c,c++ --disable-nls --disable-shared --with-newlib --with-headers=../newlib-4.1.0/newlib/libc/include

14 .编译GCC

make -j16

请添加图片描述

15.安装gcc

make install-strip

请添加图片描述

16 新建newlib-3.1.0-build文件夹,并在MSYS2中进入文件夹

mkdir newlib-3.1.0-build
cd ../
cd newlib-3.1.0-build

17.配置newlib

../newlib-3.1.0/configure --target arm-eabi --prefix /d/gnu/out

注意3.1.0修改为自己下载的newlib版本号和/d/gnu/out为自己电脑的目录。

请添加图片描述

18.编译

make

请添加图片描述

19 安装

make install

请添加图片描述

19.下载GDB

用IE浏览器打开ftp://sourceware.org/pub/gdb/releases/ ,选择

请添加图片描述

20.准备工作

tar -xzvf gdb-9.1.tar.gz
 mkdir gdb-9.1-buildcd gdb-9.1-build/

21.配置

../gdb-9.1/configure --target arm-eabi --prefix /d/gnu/out

22.编译

make -j16

请添加图片描述

19 安装

make install

请添加图片描述

19 编译完成后,增加系统环境变量

1.增加out目录下环境变量

如下图所示,如果对比环境是否增加

D:\gnu\out\libexec\gcc\arm-eabi\11.3.0
D:\gnu\out\lib\bfd-plugins
D:\gnu\out\share\man\man1
D:\gnu\out\bin
D:\gnu\out\arm-eabi\bin

请添加图片描述

2.增加msys2的环境变量

注意此目录为安装msys2下的64位系统的bin目录

D:\installAddress\msys2\mingw64\bin

请添加图片描述

20.编译 libiconv

下载链接:libiconv

请添加图片描述

下载后解压到gnu目录下

请添加图片描述

在msys2终端进入该目录。

输入:

./configure && make && make install

请添加图片描述

等待编译完成。

编译完成后将编译生成的dll加入系统环境变量中

D:\gnu\libiconv-1.17\lib\.libs

请添加图片描述

21.测试arm-eabi-gcc工具链

使用管理员身份运行命令行提示符

请添加图片描述

输入

D:

进入可切换盘符

进入gnu目录,输入

arm-eabi-gcc -v

请添加图片描述

通过上图可以看到arm-eabi-gcc工具链已经配置完成。

22.注意此工具链仅用于裸机程序的编译,仅用于单片机开发板。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_20214.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【5G RRC】5G 切换(handover)那点事儿

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

python去图片背景

Remove Image Background using Python https://youtu.be/RkdFkhfMK2k

跨境电商必读,WhatsApp营销入门指南!

关键词&#xff1a;WhatsApp营销、跨境电商营销 现在&#xff0c;跨境社交媒体和Messengers不仅仅是私人交流的渠道了。很多跨境电商已经找到了在WhatsApp营销的秘诀&#xff0c;如果你还没开始&#xff0c;你可能已经落后了。同时&#xff0c;与其他平台相比&#xff0c;在 W…

Vue组件-卡片动画倒计时

前言 最近有朋友在做投票的项目&#xff0c;里面有用到一个倒计时的组件&#xff0c;还想要个动画效果。cv大法浸染多年的我&#xff0c;首先想到的是直接找个现有的组件。 通过一通搜索&#xff0c;看上的只有一个 vue2-flip-countdown&#xff0c;但是当我要修改大小和颜色…

(附源码)计算机毕业设计SSM游乐园娱乐项目管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Github的使用教程

文章目录注册查找仓库下载代码fork仓库管理创建仓库添加文件提交issue提交/接受PRpages一直想进入工程这块领地&#xff0c;但是好像没咋学过github&#xff0c;今天学一下&#xff0c;先上个名词解释 注册 首先&#xff0c;github其实是不需要邮箱和手机号的&#xff0c;可以…

window11下安装.framework3.5的方法

window11下安装.framework3.5的方法 如果正常安装报错了&#xff0c;可采用如下方法重新安装 一、把安装iso文件 zh-cn_windows_11_business_editions_version_22h2_updated_sep_2022_x64_dvd_515a832b.iso 装载到虚拟盘中H:\sources\sxs\中的文件拷贝到硬盘已存在的盘符F:\w…

容器适配器——stack/queue/priority_queue

目录 一. stack 二. queue 三. priority_queue 1. empty()&#xff0c;top()&#xff0c;size()的实现 2. pop和push的实现 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该种模式是将一个类的接口转…

C语言:数组参数、指针参数

目录 一.字符指针&#xff0c;指针数组&#xff0c;数组指针简单回顾 二.数组参数、指针参数 一维数组传参 二维数组传参 这里需要注意&#xff1a; 一级指针传参 思考 二级指针传参 思考 一.字符指针&#xff0c;指针数组&#xff0c;数组指针简单回顾 #include<std…

java虚拟机中的双亲委派机制

文章目录双亲委派机制工作原理工作场景调用过程三种加载器调用范围String类加载过程StringTest类加载过程双亲委派机制优点双亲委派机制 Java虚拟机对class文件采用的是按需加载的方式&#xff0c;也就是说当需要使用该类时才会将它的class文件加载到内存生成class对象。而且加…

一些有趣的小项目合集~

pyqt人脸识别&#xff1a; nullhttps://www.jb51.net/article/168718.htmpyqt目标检测&#xff1a; 利用PyQt5为目标检测Faster-rcnn-Pytorch添加GUI界面&#xff08;二&#xff09;-python黑洞网 (pythonheidong.com)https://www.pythonheidong.com/blog/article/337144/e2d…

最常见的IMU:MPU6050

I2CI^2CI2C通讯 ​ I2CI^2CI2C is a two-wire interface comprised of the signals serial data (SDA) and serial clock (SCL). In general, the lines are open-drain and bi-directional. In a generalized I-C interface implementation, attached devices can be a maste…

优雅的处理参数校验以及异常

1、前言 编写控制层时&#xff0c;我们可能会自己去校验请求参数&#xff0c;就会出现这样的代码&#xff1a; if (StringUtils.isEmpty(memberSid)) {return new JsonResult(false, "参数memberSid为空"); } if (null test) {return new JsonResult(false, "…

油溶性PbS量子点近红外发射光PL800nm-1600nm

油溶性PbS量子点近红外发射光PL800nm-1600nm 油溶性PbS量子点产品&#xff0c;表面由疏水配体包覆&#xff0c;平均的量子产率为50%&#xff0c;储存时应避免阳光直射&#xff0c;4度密封暗处保存&#xff0c;可以为客户订制生产800nm&#xff5e;1600nm任一波长不同克数的产品…

叶毓睿:元宇宙发展与治理中,治理的主体是谁?治理的对象是谁?

中国移联元宇宙产业委员会联席秘书长、《元宇宙十大技术》著者之一、高效能服务器和存储技术国家重点实验室首席研究员叶毓睿&#xff1a;治理之可能性的关键在于延续性和开创性。 2022年9月24日&#xff0c;元宇宙产业委特别筹备的“发展与治理”2022元宇宙共治大会暨《元宇宙…

【JT-1/2电子式同步检查继电器】

1 用途 JT-1型同步检查继电器用于两端供电线路的自动重合闸线路中&#xff0c;其作用在于检查线路上电压的存在及线路上和变电站汇流排上电压向量间的相角差。 2 结构和原理 2.1 本继电器采用嵌入式安装&#xff0c;其主体部分系插拔式结构 2.2 本继电器主体部分与DT-1型同…

【Python基础面向对象】self、类变量和实例变量、__init__

哈喽兄弟们&#xff0c;我们接着上篇继续学习面向对象。 面向对象化编程所有的实例对象和实例方法都必须以self作为第一个参数&#xff0c;文章内容接上一章&#xff1a;Python面向对象编程基础之面向对象思想和特点、类和对象。这个系列将会很详细的解释清楚Python面向对象编程…

java实现多层级目录树详解

一&#xff0c;引言 在开发中&#xff0c;经常遇到前端需要实现一个多层级的目录树&#xff0c;那么后端就需要根据这种结构返回对应的数据&#xff0c;因此在这里记录一下本人在开发中是如何实现这个多层级的目录树。 二&#xff0c;建表建库 在建表时&#xff0c;需要注意…

(附源码)计算机毕业设计SSM悠哈出租车管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

模拟IC设计到底怎么学?给初学者一点建议

想必大家都知道&#xff0c;模拟IC设计非常难学。就拿最普遍的晶体管来说&#xff0c;我们分析它的时候必须首先分析直流偏置&#xff0c;其次在分析交流输出电压。可以说&#xff0c;这是一项相当复杂的工作。有些朋友一直吐槽模拟IC设计真的非常难学&#xff0c;那么到底该怎…