Ubuntu下交叉编译器工具链的安装方法

news2024/11/25 13:10:21

 

本篇文章记录Ubuntu下交叉编译器工具链的安装方法。

目录

一、交叉编译器

1、交叉编译器简介

2、获取交叉编译器 

3、安装交叉编译器

 4、安装相关库

二、结语 


一、交叉编译器

1、交叉编译器简介

交叉编译器是一种编译器,它在一种平台上运行,但生成可以在另一种不同平台上执行的代码。它常用于将源代码编译为目标平台(如不同的操作系统或硬件架构)所需的可执行文件。例如,在x86计算机上编译ARM架构的程序时,就需要使用交叉编译器。

在 Liux 进行 C 语言开发,里面使用 GCC 编译器进行代码编译,但是 Ubuntu 自带的 gcc 编译器是针对 X86 架构的!而我们现在要编译的是 ARM 架构的代码,所以我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架构代码的 GCC 编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是:
1、它肯定是一个 GCC 编译器。
2、这个 GCC 编译器是运行在 X86 架构的 PC 上的。
3、这个 GCC 编译器是编译 ARM 架构代码的,也就是编译出来的可执行文件是在 ARM 芯
片上运行的。
交叉编译器中“交叉”的意思就是在一个架构上编译另外一个架构的代码,相当于两种架构“交叉”起来了。

2、获取交叉编译器 

 交叉编译器有很多种,我们使用 Linaro 出品的交叉编译器。Linaro 开发了很多软件,最著名的就是 Linaro GCC 编译工具链(编译器),关于 Linaro 详细的介绍可以到 Linaro 官网查阅。 Linaro GCC 编译器下载地址如下:
https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/, 打开以后下载界面如图:

将下载好的安装包拷贝到Ubuntu下,可以使用安装好的 FileZilla 将交叉编译器拷贝到Ubuntu 中。

3、安装交叉编译器

在 Ubuntu 中创建目录: /usr/local/arm,命令如下:


sudo mkdir /usr/local/arm


创建完成以后将刚刚拷贝的交叉编译器复制到/usr/local/arm 这个目录中,在终端使用命令
“cd” 进入 到 存放 有交叉编译器的目录 ,然后使用如下命令将交叉编译器复制到/usr/local/arm 中:


sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f

拷贝完成以后在/usr/local/arm 目录中对交叉编译工具进行解压,解压命令如下:
 sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

等待解压完成,解压完成以后会生成一个名为“gcc-linaro-4.9.4-2017.01-x86_64_arm-linuxgnueabihf”的文件夹,这个文件夹里面就是我们的交叉编译工具链。

修改环境变量,使用 VI 打开/etc/profile 文件,命令如下:
 sudo vi /etc/profile

 打开/etc/profile 以后,在最后面输入如下所示内容:

export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
添加完成以后的/etc/profile 如图

修改好以后就保存退出,重启 Ubuntu 系统,交叉编译工具链(编译器)就安装成功了。

 4、安装相关库

在使用交叉编译器之前还需要安装一下其它的库,命令如下:
sudo apt-get install lsb-core lib32stdc++6
如果交叉编译器安装正确的话就会显示版本号

二、结语 

以上就是交叉编译器的安装方法了,希望我的分享对你有所帮助!

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爱思唯尔这三个latex模版有什么区别?

这三个模板在大部分内容上是相同的,主要的区别在于它们处理引用和参考文献的方式。这三种模板分别对应不同的文献引用需求,这通常是根据目标期刊的具体要求来决定的: Harvard style(elsarticle-template-harv.tex)&…

超详细!!!electron-vite-vue开发桌面应用之数据全局状态管理pinia配置(八)

云风网 云风笔记 云风知识库 在这个项目中采用pinia进行全局状态管理 Pinia符合直觉的 Vue.js 状态管理库 ‌Pinia和‌Vuex的主要区别如下: 架构设计 Vuex采用了集中式的架构,将所有的状态存储在一个单一的全局状态树中,通过‌mutations和…

第三届IEEE云计算、大数据应用与软件工程国际学术会议 (IEEE-CBASE 2024,10月11-13)

第三届IEEE云计算、大数据应用与软件工程国际学术会议 ( CBASE 2024 )将于2024年10月11—13日在中国杭州举办。 该会议在连续两届成功举办的基础上,本届将由浙江水利水电学院、浙江省自动化学会、浙江省科协智能制造学会联合体主办,浙江水利水…

三十七、【人工智能】【机器学习】【监督学习】- AdaNet算法模型

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

【Linux】自主编写简单shell

目录 一、C文件接口 二、系统文件I/O 1 .接口介绍 2 .open函数返回值 3 . 文件描述符fd 4 . 文件描述符的分配规则 5 .重定向 6 .使用 dup2 系统调用 7 .FILE 三、缓冲区 一、C文件接口 写文件&#xff1a; #include <stdio.h> #include <string.h> int main(…

Allegro如何调整PCB颜色亮度?

在用Allegro进行PCB设计时,有时候打开别人的PCB板或Demo板,然后在此基础上设计,但发现颜色太亮太刺眼了,不太习惯,那如何调整PCB的亮度呢? PCB板颜色的显示亮度太亮。如下图 下面详细介绍具体设置的方法: 1、选择菜单栏Display→Color/Visibility(颜色/可见度) 2、跳出…

SpringBoot3 + Flowable7 工作流引擎使用笔记

目录 Flowable 简介流程设计器安装使用 SpringBoot 3 整合表结构流程部署启动流程流程审批流程挂起和激活任务分配固定分配表达式分配值表达式方法表达式 监听器分配 流程变量运行时变量历史变量 身份服务候选人拾取任务归还任务指派给别人候选人组创建用户创建用户组用户关联用…

startData

某音startData 记得加入学习群&#xff1a; python爬虫&js逆向3 714283180

贝壳财报解读:彰显韧性,下场拿地,迈向新周期

众所周知&#xff0c;当前我国房地产行业已经迈入“存量房时代”&#xff0c;相比“大扩张时代”&#xff0c;更偏细水长流型&#xff0c;也为贝壳这类“科技驱动的一站式新居住服务平台”&#xff0c;提供了发展舞台。 日前&#xff0c;贝壳披露2024年第二季度财报&#xff1…

第40课 Scratch入门篇:绘制围棋棋盘

绘制围棋棋盘 故事背景: 作为一个围棋手,要有一个好的棋盘才行,让我们来设计一个属于自己的棋盘吧! 程序原理: 这节课的原理很简单,就是通过x,y坐标的偏移来画线,难度就是坐标点的设置,其实坐标用的习惯了,这块也不复杂,让我们一起开始学习! 开始编程 1、删除预…

鸿蒙Text部分文字变色

工具类&#xff1a; export class TextUtil {public static readonly REGEX_B_S "<B>"public static readonly REGEX_B_E "</B>"/*** 获取高亮字符串列表* param str 原始字符串*/public static getHlList(str ?: string, regex ?: strin…

【docker】Dockerfile练习

1、overlay文件系统原理测试 cd /mnt mkdir A B C worker merged echo "From A">./A/a.txt echo "From A">./A/b.txt echo "From A">./A/c.txt echo "From B">./B/a.txt echo "From B">./B/d.txt echo &quo…

smallpdf: 免费高效的PDF水印添加工具

引言 在数字文档管理和分享的过程中&#xff0c;保护版权和确保文档的原创性变得尤为重要。PDF文件作为一种广泛使用的格式&#xff0c;经常需要添加水印来表明所有权或提醒查看者注意文档的敏感性。本文将介绍一款名为smallpdf的免费工具&#xff0c;它能够轻松地为PDF文件添…

第41课 Scratch入门篇:显示声波图形

显示声波图形 故事背景: 电脑的麦克风可以收到各种声音,我们来看看,通过图形把麦克风的声音显示出来,设计一个绘制声音的声波图形 程序原理: 这节课的原理很简单,就是通过x,y坐标的偏移来画线,难度就是坐标点的设置,其实坐标用的习惯了,这块也不复杂,让我们一起开始…

R是一种强大的编程语言和环,你为何还需要RStudio?

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容&#xff0c;每篇文章都在 5000 字以上&#xff0c;质量平均分高达 94 分&#xff0c;看全文请点击下面链接&#xff1a; 2章1节&#xff1a;R和RStudio的下载和安装&#xff08;Windows 和 Mac&#xff09;_r…

机器学习深度学习中的Warmup技术是什么?

机器学习&深度学习中的Warmup技术是什么&#xff1f; 在机器学习&深度学习模型的训练过程中&#xff0c;优化器的学习率调整策略对模型的性能和收敛性至关重要。Warmup是优化器学习率调整的一种技术&#xff0c;旨在改善训练的稳定性&#xff0c;特别是在训练的初期阶…

netCDF文件读写处理

1.什么是 NetCDF&#xff1f; NetCDF 是一组软件库和自描述、独立于机器的数据格式&#xff0c;支持创建、访问和共享面向数组的科学数据。NetCDF 由Unidata开发和维护。Unidata 提供用于地球科学教育和研究的数据和软件工具。Unidata 是大学大气研究公司 ( UCAR ) 社区计划 (…

遗传算法与深度学习实战(4)——遗传算法详解与实现

遗传算法与深度学习实战&#xff08;4&#xff09;——遗传算法详解与实现 0. 前言1. 遗传算法简介1.1 遗传学和减数分裂1.2 类比达尔文进化论 2. 遗传算法的基本流程2.1 创建初始种群2.2 计算适应度2.3 选择、交叉和变异2.4算法终止条件 3. 使用 Python 实现遗传算法3.1 构建种…

基于IMX8M_plus+FPGA+AI监护仪解决方案

监护仪是一种以测量和控制病人生理参数&#xff0c;并可与已知设定值进行比较&#xff0c;如果出现超标可发出警报的装置或系统。 &#xff08;1&#xff09;监护仪主要采集测量人体生理参数&#xff0c;心电、血压、血氧、体温等需要采集处理大量的数据&#xff0c;系统需要多…

vue-quill-editor富文本组件返回值居中样式不生效

最近项目有用到富文本编辑器&#xff0c;用的是vue-quill-editor富文本组件&#xff0c;但在使用过程中发现个问题&#xff1a; 明明在编辑时已经设置居中&#xff0c;并且详情弹窗的回显也正常居中&#xff0c;但放到其他地方后&#xff0c;返回值的居中就不生效了 问题截图如…