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

ops/2024/10/9 17:28:00/

 

本篇文章记录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.ppmy.cn/ops/95076.html

相关文章

阿里云注册、认证、短信资质、签名、模板申请过程

一、帐号注册 输入“帐号密码注册”中的相关信息即可。 手机号是必须的,先确定好手机号。 正常的可以直接注册成功的。 二、实名认证 注册成功之后,就可以点击上述的“快速实名认证”。 这次选择的是“企业认证”。 有几种方式,如下&#x…

Jenkins链接Gitlab(HttpSSH方式)

文章目录 前言一、安装必要插件1、安装git2、安装Jenkins插件 二、配置git1、http方式(1)基础配置(http方式配置凭证)(2)测试 2、SSH方式配置凭证 总结 前言 为避免汉化导致的显示差异,以下操作…

React 学习——打包后,包体积可视化

1、安装插件 ( source-map-explorer ) npm i source-map-explorer 2、在配置文件package.json中加入 ( "analyze": "source-map-explorer build/static/js/*.js" ),位置截图 "analyze&q…

永久旋转 PDF 文件的 3 种简便方法

PDF 文件通常由扫描仪创建,用于呈现文档或书籍。当您输出 PDF 作品时,打开它,会发现有几页是颠倒的。 你应该做什么? 将这些页面倒置扫描,按顺序排列,最后创建正确的 PDF 文件? 当然&#xf…

Golang | Leetcode Golang题解之第342题4的幂

题目: 题解: func isPowerOfFour(n int) bool {return n > 0 && n&(n-1) 0 && n%3 1 }

abc 290 d Marking (一个环上每隔d个给未标记的打标记,问第几个标记是什么)

题目: https://atcoder.jp/contests/abc290/tasks/abc290_d 题解: 代码: // Problem: D - Marking // Contest: AtCoder - Toyota Programming Contest 2023 Spring Qual B(AtCoder Beginner Contest 290) // URL: ht…

Matplotlib库学习之scatter(模块)

Matplotlib库学习之scatter(模块) 一、简介 Matplotlib 是 Python 中一个强大的绘图库,其中 matplotlib.pyplot.scatter 用于创建散点图。散点图在数据可视化中广泛用于展示两个变量之间的关系。 二、语法和参数 语法 matplotlib.pyplot.scatter(x, y, sNone, c…

在C#中用Assembly加载静态类

在C#中,使用 System.Reflection 命名空间中的 Assembly 类可以加载程序集(Assembly),然后通过反射访问程序集中的类型和成员。静态类是包含静态成员的类,你不能创建静态类的实例,但可以访问其静态成员。 以…