1.编译
编译可以理解为 是在一个平台生成在该平台的可执行代码。
2.本地编译
本地编译 在本地平台上,编译生成的程序只能放到当前平台下运行。
比如,我们在x86上面编译生成的可执行代码,只能放在x86架构上面运行,不能放在ARM架构上面运行 。
3.交叉编译
交叉编译 是在本地平台上编译生成另一个平台的可执行代码,但是编译平台却不能运行此代码。
比如我们在Windows上面编写STM32、C51代码,并编译成可执行代码,如xx.hex,是在STM32,C51上面运行,不是在Windows上面运行。
比如我们在树莓派上面编写树莓派的代码,只能在树莓派上面运行,不能再Ubuntu,Linux上面运行。
3.为什么要交叉编译?
(1)平台不允许或者不能够安装我们所需要的编译器。
(2)性能,目的平台资源匮乏,无法运行我们所需要的编译器。
(3)即使像树莓派这些,在本地就能编译的,也要进行交叉编译,因为树莓派有时因为目标平台还没有建立,连操作系统都没有,根本就运行不了编译器,操作系统也是代码,也需要编译。
宿主机:编辑和编译代码的平台,一般是基于x86的pc机,通常也被称为主机。
目标机:通常都是费x86平台的,宿主机编译得到的可执行代码放到目标机上执行。
1.交叉编译工具链的安装
1.下载
访问比较慢,我把它放到网盘里面你们也可以直接去下载。
链接:https://pan.baidu.com/s/1vIOW9hQT6mmY6VEjIm_h5A?pwd=zew6
提取码:zew6
2.安装
(1)把下载好的压缩包拷贝或者放到虚拟机里面去,然后解压
unzip tools-master.zip
(2)进入目录,进入到最里面箭头指着的就是你想要的工具了
但如果每次使用都要进入这么多的目录,非常的麻烦,那怎么样才能像gcc一样,直接就能使用呢,这里有两种方法一种是临时有效,一种是永久有效,下面来看看。
临时有效:
(1)使用 echo $PATH 命令显示当下的环境变量
(2)在使用pwd显示当前的绝对路径
(3)然后再使用 export PATH=刚才显示的环境变量,箭头指的冒号后面替换成,刚才显示的绝对路径,就ok了。
永久有效:
(1)修改工作目录下.bashrc 文件在最后面加上临时有效的第三部
(2)使用source 命令让它刷新生效一下,就OK啦。
source /home/CLC/.bashrc
3.使用
(1)检查一下交叉编译工具对不对,看版本号4.83,正确。
arm-linux-gnueabihf-gcc -v
(2)编译
arm-linux-gnueabihf-gcc xxx.c -o xxx
(3)如何把编译生成的可执行文件下载到开发板,使用 scp 命令。
scp demo pi@192.168.137.1:/home/pi
指令 文件名 开发板用户名@开发板地址:开发板的绝对路径
好了,最后到这也就完成了,交叉编译工具链的安装与使用了,加油,
一个人为什么要努力? 因为我喜欢的东西都很贵,我想去的地方都很远。