Ubuntu16.04 ARM/Qt 交叉编译环境搭建

Ubuntu16.04 ARM/Qt 交叉编译环境搭建

最近由于工作需要,接触到交叉编译,鉴于之前没有完整做过这方面的工作,记录一下。后续也会尽量把相关的内容都加入进来

背景

客户需求要在嵌入式环境中使用相机,这个相机之前有完整的windows版本SDK,嵌入式下面还没开发过,因此需要移植,目前考虑的主要问题就是环境搭建吧,代码理论上应该不需要改动或者改动比较小。客户用的开发板是toybrick-3399Pro,目前手上只有Firefly-RK3288,两个架构有所不同,前者是六核ARM 64位处理器(双核Cortex-A72+四核Cortex-A53),ARMv8指令集,后者是四核ARM 32位处理器(四核Cortex-A17),ARMv7-A指令集,对于交叉编译来说,就是32位和64位的区别。为了验证整个移植过程,先在Firefly-RK3288上跑通Qt Demo,然后再更换交叉编译工具,编好后给客户测试。
(32位和64位会放在一起说明,不同的平台基本步骤是一样,如果是自己用,针对自己的平台处理一种就行了,没必要32位和64位都下载)

环境说明

服务器:虚拟机+ubuntu16.04 64位

安装交叉编译工具

所有操作都在root权限下进行。
交叉编译安装方法有两种:可以直接apt-get安装,也可以自己下载源文件
1、apt-get安装

$sudo apt-get install gcc-arm-linux-gnueabihf
$sudo apt-get install g++-arm-linux-gnueabihf

这种安装方式,不需要手动添加环境变量,安装完成后,交叉编译工具会放在/usr/bin目录下

2、手动安装
如果无法用apt-get安装,提示:Unable to locate package gcc-arm-linux-gnueabihf,可以单独下载交叉编译器。
下载地址:https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/
这里面有很多版本,区别无外乎几个:大小端,Armv7/Armv8,32位/64位,裸机/Linux,具体如下表:
在这里插入图片描述

名称 syscall 指令集 大小端 位宽 description
aarch64-linux-gnu linux ARMv8 little 64 aarch64 Linux Platform
aarch64_be-linux-gnu linux ARMv8 big 64 aarch64 Linux Platform
arm-linux-gnu-gnueabi linux ARMv7 little 32 arm EABI soft-float
arm-linux-gnu-gnueabihf linux ARMv7 little 32 arm EABI hard-float
armeb-linux-gnu-gnueabi linux ARMv7 big 32 arm EABI soft-float
armeb-linux-gnu-gnueabihf linux ARMv7 big 32 arm EABI hard-float
arm-eabi BareMetal ARMv7 little 32 arm EABI hard-float
armeb-eabi BareMetal ARMv7 big 32 arm EABI soft-float
aarch64-elf BareMetal ARMv8 little 64 armv8 EABI,hard-float

对于32位arm平台下载
gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz.
因为后面还有64位平台需要处理,所以还下载了64位的交叉编译工具
gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz.
下载完成后,手动安装:

$tar -xvf gcc-linaro-7.3.1-2018.05-x86_64_arm-lin
  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值