1. 交叉编译工具链介绍
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 指默认编译参数支持硬件浮点功能)等2. 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++62.3 交叉编译器验证
使用以下命令查看交叉编译工具的版本号,若安装正确就会显示版本号
arm-linux-gnueabihf-gcc -v
从上图可以看出当前交叉编译器的版本号为4.9.4,说明交叉编译工具链安装成功。 使用交叉编译器的命令一般是arm-linux-gnueabihf-gcc
戴姆勒斥资5亿欧元研发自动驾驶卡车
科学家创造了一种算法,能够让机器人用绕线画重新创造出各种图像
面对人脸识别问题,如何更安全?
国产功率器件供应商无锡新洁能荣获宁波德业年度“战略供应商”称号
小米mix2s和OPPO R15哪个好
交叉编译工具链介绍
三大运营商对骚扰电话有何作为?
基于认知电子战的干扰策略优化满足对抗需求
美国在工业机器人等行业加征税率为25%,中国制造国产化待突围
转矩与功率及转速的关系
5G或将颠覆你的汽车和出行模式
ROG冰刃3s新锐笔记本评测 视频工作者该有的移动创作平台
金融机构是如何应用区块链技术的
村田福井厂因大雪而停工 MLCC产能比重高达25%
调光台灯电路原理图
小米手环的娘家也要开个杂货铺?华米科技推出三款新品
大联大品佳集团推出基于新唐科技的智能语音识别解决方案
简报:百度智能云发布“知识中台”和“AI中台”
芯邦高举维权大旗,捍卫“中国芯”荣誉
机器人工作站二维Layout视图输出