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并测试

相关推荐
bsauce8 分钟前
【kernel exploit】CVE-2026-23271 perf_event竞态UAF漏洞-ROP提权
linux·linux内核·内核漏洞·内核漏洞利用
yong999011 分钟前
基于Qt的文件传输系统
开发语言·qt
誰能久伴不乏37 分钟前
ibmodbus “Invalid argument“ 错误的排查与修复
c++·qt·modbus
Hehuyi_In40 分钟前
从优雅到爆烈 —— Linux全力回收内存的一生
linux·内核·内存·memory·回收
杨充1 小时前
1.1 数据编码设计原理
linux·运维·网络·底层原理·数据编码
fan_music1 小时前
Linux I/O
linux
Java小白笔记1 小时前
Linux 手动部署 Oracle JDK 17 完全指南
java·linux·oracle
肥or胖2 小时前
Qt中OpenGL快速入门
qt·音视频·opengl
慵懒的猫mi2 小时前
deepin 25部署x11vnc+xrdp,实现vnc和mstsc双重访问
linux·windows·开源软件·deepin
剑神一笑3 小时前
Linux lsof 命令深度解析:从文件描述符到进程追踪
linux·运维·php