Ubuntu 16.04交叉编译arm-linux-gnueabihf的QT5.6.2


文章目录


前言

一个项目要用QT5.6.2,交叉编译到imx6里运行,虚拟机ubuntu1604


一、使用apt安装ubuntu库里的QT

运行以下指令安装需要的包,其中libqt5serialport5-dev和qtmultimedia5-dev是我的QT程序在ubuntu下编译需要的组件g+±arm-linux-gnueabihf是用在imx6的交叉编译器

sh 复制代码
sudo apt install qtbase5-dev qt5-qmake qtcreator libqt5serialport5-dev  \
qtmultimedia5-dev gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf

安装完成后打开项目,不需要做任何配置即可在ubuntu上编译并运行程序(可能需要安装一些前置的软件,我这边虚拟机用很久了,大部分前置软件都有了),安装完成后版本为QT5.5.3、QTCREATOR3.5.1、arm-linux-gnueabihf-gcc5.4.0

此QT主要用在做验证的,在PC上看界面比较方便

二、使用源码交叉编译QT5.6.2

QT5.6.2比较老了,源码比较难找,在这里贴出来https://download.csdn.net/download/qq_36517072/92182633

解压后修改qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf,因为我们使用的编译器是arm-gnueabihf-g++,带硬件浮点没匹配的

sh 复制代码
# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc
QMAKE_CXX               = arm-linux-gnueabihf-g++
QMAKE_LINK              = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_NM                = arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-linux-gnueabihf-strip
load(qt_config)

在源码目录输入以下指令生成QT5.6.2的交叉编译版本,注意之前安装完arm-linux-gnueabihf-g++要重新打开一个终端,否则环境变量里可能没有arm-linux-gnueabihf-g++

sh 复制代码
./configure  -prefix /opt/qt5.6.2 -opensource -confirm-license \
 -xplatform linux-arm-gnueabi-g++  -no-opengl \
-no-openssl -no-sse2 -no-cups -no-glib -no-pkg-config -no-separate-debug-info
make -j8
sudo make install -j8

三、QTCREATOR添加交叉编译并测试

添加交叉编译QT qmake

添加交叉编译器

添加KIT,使用之前的QT和编译器并应用

使用ARM-GCC编译程序,生成应用程序

最粗暴配置库直接将/opt/qt5.6.2/lib全丢到根文件系统下的/usr/lib/下,空间敏感也可以自己裁剪

上传并赋予执行权限可以正常运行


总结

主要介绍了ubuntu1604下arm-linux-gnueabihf交叉编译QT5.6.2并测试

相关推荐
知识分享小能手11 分钟前
CentOS Stream 9入门学习教程,从入门到精通, CentOS Stream 9 命令行基础 —语法知识点与实战详解(4)
linux·学习·centos
烤鱼骑不快1 小时前
linux 软Raid
linux
hhwyqwqhhwy2 小时前
Linux file->private
linux·运维·服务器
WongKyunban2 小时前
在Linux下制作软件安装包
linux·运维·服务器
IT 乔峰2 小时前
Centos7中部署DNS服务器
linux
hweiyu002 小时前
Linux 命令:parted
linux·运维·服务器
搞全栈小苏2 小时前
Linux下 cmake所有版本适用/下载编译使用教程 附cmake3.26安装包
linux·运维·ubuntu
偶像你挑的噻3 小时前
16-Linux驱动开发-多核通信中的并发控制
linux·驱动开发·stm32·嵌入式硬件
LNN20224 小时前
Qt 5.8.0 下实现触摸屏热插拔功能的探索与实践(3)
开发语言·qt
liweiweili1264 小时前
Linux 中查询指定目录下查找包含特定文本的文件
linux·运维·chrome