Ubuntu 下搭建 GCC 交叉编译工具链
一、交叉编译工具链介绍
1.1 交叉编译
本地编译:在当前目标平台下,编译出来的程序,放到当前平台下,就可以运行的
交叉编译:在一种平台上编译,编译出来的程序,放到别的平台上运行(编译和运行环境不一样,属于交叉的)
交叉编译是一个和本地编译,相对应的概念。主要和嵌入式开发有关,由于嵌入式系统中的各种资源相对有限,只够嵌入式系统运行的,没太多剩余的资源,所以很难进行直接的本地编译
1.2 交叉编译工具链
编译过程是按照不同的子功能,依照先后顺序组成的一个复杂的流程,如下图:
编译过程包括了预处理、编译、汇编、链接等功能。每个子功能都是一个单独的工具来实现,它们合在一起形成了一个完整的工具集。同时编译过程又是一个有先后顺序的流程,牵涉到工具的使用顺序,每个工具按照先后关系串联在一起,形成了一个编译工具链。
交叉编译工具链就是为了编译跨平台体系结构的程序代码而形成的由多个子工具构成的一套完整的工具集。同时,它隐藏了预处理、编译、汇编、链接等细节,当我们指定了源文件(.c)时,它会自动按照编译流程调用不同的子工具,自动生成最终的二进制程序映像(.bin)。
注意:严格意义上来说,交叉编译器,只是指交叉编译的gcc,但是实际上为了方便,我们常说的交叉编译器就是交叉编译工具链
1.3 交叉编译工具链命名规则
在使用交叉编译链时,常常会看到下面这样的名字:
arm-linux-gnueabihf-
arm-none-linux-gnueabi-
arm-cortex_a8-linux-gnueabi-
mips-malta-linux-gnu-
这些交叉编译链的命名通常会遵循一定的规则:arch-vender-os-abi
,各字段说明如下:
- arch:目标cpu架构,比如mips、arm、x86、riscv等,该字段通常不会省略
- vendor:提供此编译工具链的厂商名称或是厂商特定信息,该字段只是标识信息,没有实际意义,可以为none、cross、unknow或是直接省略
- os:目标设备上运行的操作系统,常见的有linux、none(裸机)等
- abi:应用程序二进制接口(Application Binary Interface),交叉编译链所选择的库函数和目标映像的规范,该字段常见的值有abi 、eabi(embedded abi)、gun(glibc+oabi)、gnueabi(glibc+eabi)、gnueabihf(hf 指默认编译参数支持硬件浮点功能)等
二、Ubuntu 下搭建 GCC 交叉编译工具链
Ubuntu自带的gcc编译器是针对X86架构的,但是我们要编译的是ARM架构的代码,所以需要一个在X86架构PC上运行,可以编译ARM架构代码的交叉编译器。
2.1 下载交叉编译器
本文使用Linaro出品的交叉编译器, Linaro是一间非营利开放源代码软件工程公司,最著名的就是Linaro GCC编译工具链(编译器),其官网可以下载源码
Linaro 网站提供了很多种 GCC 交叉编译工具链,因为我们使用的是一个 Cortex-A7 内核的开发板,因此选择 arm-linux-gnueabihf,再根据32/64位系统下载不同版本的编译器,这里选择下载x86_64版本
2.2 安装交叉编译器
在 Ubuntu 中创建目录:/usr/local/arm
sudo mkdir /usr/local/arm
将下载好的交叉编译器复制到该目录中
sudo cp gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz /usr/local/arm/ -f
拷贝完成后在该目录中对交叉编译工具进行解压
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
打开/etc/profile 文件,修改环境变量,在文件末尾添加如下内容
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
使用交叉编译器,还需要安装如下库
sudo apt-get install lsb-core lib32stdc++6
2.3 交叉编译器验证
使用以下命令查看交叉编译工具的版本号,若安装正确就会显示版本号
arm-linux-gnueabihf-gcc -v
从上图可以看出当前交叉编译器的版本号为 4.9.4,说明交叉编译工具链安装成功。使用交叉编译器的命令一般是arm-linux-gnueabihf-gcc
Ubuntu 下搭建 GCC 交叉编译工具链相关推荐
- Linux下gcc交叉编译工具链制作实例详细总结(附下载地址)
一.简介 本文主要讲解gcc交叉编译工具链搭建的全过程,以本人实际的操作去讲述整个工具链的搭建,希望对大家有所帮助. 二.工具链的搭建流程 1.下载相关源码:包括binutils.kernel.gcc ...
- 龙芯交叉编译环境搭建之交叉编译工具链配置
龙芯交叉编译环境搭建之 交叉编译工具链配置 1 概括 本文档适用于龙芯3A3000/4000 UEFI代码编译,重点指导交叉编译环境的搭建方法,对系统安装不做介绍. Ubuntu系统(版本为ubun ...
- 构建gcc交叉编译工具链
如何构建一个GCC交叉编译工具链 GCC不仅是一个编译器,它是一个开源工程,可以让你建立各种编译器.一些编译器支持多线程,一些支持共享库,一些支持Multilib(典型的应用是在64位机上运行32位应 ...
- 飞腾交叉编译环境搭建之交叉编译工具链配置
1 概括 本文档适用于国产飞腾平台FT-2000/4 (D2000). u-boot.uefi.kernel代码编译,重点指导交叉编译环境的搭建方法,对系统安装不做介绍. Ubuntu系统(版本为ub ...
- 搭建powerpc交叉编译工具链
参考文档:http://blog.sina.com.cn/s/blog_70dd16910100y7vj.html 安装环境:fedora-31 1.下载安装包 1.1 GCC软件包:http://f ...
- Linaro GCC 交叉编译工具链 国内源下载列表 (持续更新)
gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf.tar.xz 链接:https://pan.baidu.com/s/1-DCIVVs6QTGv5tY ...
- arm hisiv100 linux,hisiv100交叉编译工具链安装
hisi交叉编译工具链安装 一. 摘要: 交叉编译简单的说,就是A机器上编译生成,运行在B机器上.那么在A机器上的编译工具安装,就是本文所要描述的内容. 工欲善其事必先利其器,所以交叉 ...
- hisi linux nptl.tar,hisiv100交叉编译工具链安装
hisi交叉编译工具链安装 一. 摘要: 交叉编译简单的说,就是A机器上编译生成,运行在B机器上.那么在A机器上的编译工具安装,就是本文所要描述的内容. 工欲善其事必先利其器,所以交叉 ...
- linux环境变量、交叉编译工具链gcc
** linux环境变量 ** 1.linux环境变量 Linux 是一个多用户操作系统,每个用户都有自己专有的运行环境.用户所使用的环境由一系列变量所定义,这些变量被称为环境变量.系统环境变量通常都 ...
- Linux环境下交叉编译工具链的制作
本文参照教材嵌入式Linux开发入门宝典 一.在Windows上安装虚拟机 1.浏览器搜索VMware,下载VMware Workstation Pro最新版,目前为16.2.3,并完成安装. 2.打 ...
最新文章
- Java swing 如何将一个按钮放置到弹出框框的任意位置?(Absolute layout 布局的使用)...
- 移动端高清、多屏适配方案
- 透过三翼鸟,看品牌背后的“有效创新”
- 方法引用、构造器引用和数组引用
- 苹果有意参与角逐奥斯卡 欲投资6部电影!
- 卷积神经网络_mnist
- 对linux下loop设备的理解。
- altiumdesigner的基本你操作
- Maven搭建Spring+Struts2+Hibernate项目详解
- 正确区分LJMP、AJMP、SJMP、JMP指令
- JAVA大写金额转小写金额过程
- Power BI----综合应用
- 用Python写一个拼音输入法
- yolov5——detect.py代码【注释、详解、使用教程】
- 【BZOJ】4716 假摔
- 小白学习图像处理3——图像旋转原理
- 抢占式调度与非抢占式调度
- 关于openstack的keystone admin用户请求令牌成功 使用demo用户请求认证令牌失败
- Linux防火墙安装与配置
- 2022年 中国政企机构 网络安全 形势分析
热门文章
- python获取浏览器cookie_python3实现读取chrome浏览器cookie
- java图形用户界面设计实验_java图形用户界面设计实验报告(共10篇).doc
- GRADS软件初步学习
- 将点分十进制转换为ip地址表示
- 服务器系统用哪个版本好,windows服务器系统哪个版本好用
- Java Builder模式(设计模式之Builder模式)
- phpstorm的html网页乱码
- 鸿蒙系统下的搜狗输入法,搜狗输入法鸿蒙版app下载-搜狗输入法 鸿蒙版v10.28-PC6鸿蒙网...
- ASC转换BCD,ASC2BCD
- 【华为】职级、薪酬、绩效全认知