IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 细说交叉编译工具 -> 正文阅读

[嵌入式]细说交叉编译工具

要想理解交叉编译,首先要理解CPU的架构。
下面从几个方面开始说。

1. CPU的设计规范
设计一款CPU,要遵循CPU设计规范,也就是指令集。目前的指令集主要有两种,一种是X86架构,一种的ARM架构。(当然非主流的还有MIPS指令集、RISC-V指令集,二者基于RISC精简指令集)
英特尔和AMD采用的都是X86的指令集架构。
手机、平板采用的是ARM的指令架构。

ARM架构与X86架构的区别是: ARM主要是RISC精简指令集。 X86主要是复杂指令集CISC。

2. 微架构
指的是芯片的电路结构。相同的指令集可能会有不同的微架构。
比如英特尔和AMD都是X86的指令集,但是拆开芯片看到的微结构却相差很多。
微架构主要包括:运算单元、逻辑单元、寄存器等在三态,总线和单向总线、控制线的连接下组成了CPU的微架构。
3 . 交叉编译原理
交叉编译的概念指的是,在不同的平台编写、编译代码、运行。
这里所说的平台,需要详细说明一下。一个是体系结构,也就是上文所说的CPU的设计使用的架构。一个是操作系统。
二者均为平台所包含的内容。其中:
体系结构: x86、arm、MIPS、RISC-V等
操作系统:Windows、linux、VCE、vXworks
同一体系结构可以运行不同的操作系统,比如基于x86的pc机可以运行windows操作系统,也可以linux。
arm可以运行linux、也可以vxworks。
同一种操作系统也可以运行在不同的体系结构下。
比如我们编写代码一般是在windows下,编译代码一般是在linux下,而linux服务器一般是X86架构的(指的是用的Intel或者AMD的CPU芯片),这样编写出来的代码不可以在arm架构的开发板上运行。这时候就需要交叉编译,就是说在X86的机器上编译出能够在arm上运行的文件。
但同一个应用程序,不可能在多个平台下运行。如果想要运行,必须拿到这个应用程序的源代码,使用此平台特定的编译器, 编译后才可以在此平台运行。
因此想要编写在arm上运行的程序,就需要arm专用的编译器。

4. 为何不在嵌入式设备上编译?

因为编译对机器性能要求特别高,因为编译过程中会产生大量的中间文件,占用磁盘,只有机器性能好,编译才能够快速。嵌入式设备一般CPU处理速度比较慢、内存小、安装编译器内存不够等等。
所以一般都是在服务器上编译,在开发板上运行。

 所以步骤是:现在pc的linux系统下安装对应的交叉编译工具链(cross compilation tool chain),然后用这个交叉编译工具链编译我们的源代码,最终生成可在目标平台上运行的代码。

5 . 编译原理、gcc使用

(1) 编译的阶段:
在这里插入图片描述
(2) 编译使用的编译器
在这里插入图片描述
(3) gcc后参数,指定编译阶段
在这里插入图片描述
在这里插入图片描述
在编译过程中,系统会默认的在/usr/include文件夹中搜索系统的头文件,在/lib或者/usr/lib文件夹中搜索系统的库文件。
如果引用的头文件或者库文件不在上述文件路径,在需要使用-IDIR参数 +头文件搜索路径,使用-LDIR参数+库文件搜索路径,-ILIBRARY指令链接时需要的其他函数库。
在这里插入图片描述
在这里插入图片描述
(5) gcc和g++编译c++程序的不同
gcc只能编译C++源程序,不能与C++包含的库链接。
g++可以。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 12:17:17  更:2021-08-13 12:18:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:17:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计