交叉编译环境搭建

交叉编译环境搭建

编译这个事情呢,就是把源代码编译成机器可以直接执行的机器码用的,一般来说呢,我们指的是C或C++这样的编程语言。真说起来,java也有编译,python也有编译,只不过这些编程语言都是编译成其对应的解释器能够解释的字节码或其他的东西,而不是机器能够直接执行的。
Linux平台上最常用的编译工具我觉的莫过于gcc了,如果还有一些其他工具的话那就是make、qmake、cmake等等构建工具,这些都不在交叉比那一的范围内。
由于电脑上所使用的CPU的指令集不同,比如intel造的电脑CPU都是复杂指令集的,而嵌入式开发中使用的Arm都是精简指令集的,因此在复杂指令集的电脑上编译的机器码在精简指令集上是不能使用的。毕竟看名字也能看出来,精简指令集中指令比复杂指令集要少,没有指令,那肯定就没法执行了。同时又由于一般嵌入式设备的性能都比较有限,当我们的代码文件又比较多时,如果在嵌入式设备上进行编译,会很费时间,此时,人们就想了,能不能在性能更强的电脑上编译,然后将编译结果放置到嵌入式设备上运行呢,当然是可以的,这就是交叉编译。

正点原子的搭建方式

该部分内容主要参考“【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.5.pdf”文件“第四章 第三节”,其他相关资料都可以到正点原子的论坛下载到,也不要钱。话说回来,我这次使用的硬件是正点原子的NXP IMX6ULL那个平台,屏幕是4.3寸的。
交叉编译环境的搭建比较简单:

  1. 复制正点原子给的“gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz”文件到Ubuntu中
# 由于我是用的是WSL2,所以可以直接挂载windows中的硬盘,复制起来会比较简单,如果是虚拟机,可能会比较复杂,这里不再多说
# 直接复制到用户目录
cp /mnt/e/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz   ~
  1. 解压到你喜欢的任意一个目录,并将该目录添加到环境变量
# 直接解压
tar -xvf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
# 将解压后的目录复制到/opt目录并改个稍微短小好记的明自
mv gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf /opt/gcc-arm
# 添加环境变量
# 需要注意的是,这里的环境变量不仅仅是Linux中的,还有windows中的,所以千万不要瞎改
export PATH=$PATH:/opt/gcc-arm/bin
  1. 为了不每次都手动添加一次,可以将下述命令添加到.bashrc文件的最后一行
# .bashrc文件是当前用户的一个配置文件,其在每次用户打开bash时执行,所以可以将添加环境变量的操作放置到该文件中,这样,就可以自动进行配置
# 返回用户主目录
cd ~
# 编辑.bashrc文件
nano .bashrc
# 最后一行粘贴
export PATH=$PATH:/opt/gcc-arm/bin
# 使生效
source .bashrc
  1. 安装依赖并测试
sudo apt-get install lsb-core lib32stdc++6
# 添加环境变量后,可以尝试一下看是否正确
arm-linux-gnueabihf-gcc -v
# 如果输出对应的版本号就对了,否则提示找不到命令就不对了
其他搭建方式

上述方式是纯手动,比较复杂的方式,而且据正点原子资料中讲,版本不对的话编译结果可能不能执行,因此建议使用上述方式。但是本人在搞s5p6818这个开发板的时候,曾经一度没找到相关资料,就一块板子,那么搭建交叉编译环境时是没有指定的gcc的,此时我采用了一种特比较常规而简单的方式进行的交叉编译环境搭建

# 当时我就想,这gcc不管是什么版本应该在库中是有的吧,所以尝试性的搜索了多个关键词,最终执行
apt search gcc-arm
# 可以搜到如下结果
os@DESKTOP-LIE4V1T:~$ apt search gcc-arm
Sorting... Done
Full Text Search... Done
gcc-arm-linux-gnueabi/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64
  GNU C compiler for the armel architecture

gcc-arm-linux-gnueabihf/bionic-updates,bionic-security 4:7.4.0-1ubuntu2.3 amd64
  GNU C compiler for the armhf architecture

gcc-arm-none-eabi/bionic 15:6.3.1+svn253039-1build1 amd64
  GCC cross compiler for ARM Cortex-A/R/M processors

gcc-arm-none-eabi-source/bionic 15:6.3.1+svn253039-1build1 all
  GCC cross compiler for ARM Cortex-A/R/M processors (source)
  
# 也就是说可以直接使用apt命令进行安装,该方法简单明了,自动安装依赖,非常方便,s5p6818亲测可用,IMX6ULL这个没试
# 安装命令如下
sudo apt install gcc-arm-linux-gnueabihf

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值