Qt移植:Ubuntu18.04 交叉编译qt5.12.7详细教程配置编译qt-everywhere-src-5.12.7

安装qtcreator

sudo apt install qt5-default qtcreator -y

安装交叉编译链

参考我的博客安装arm-linux-4.9.4交叉编译链

已配置好TSLIB

参考我的博客tslib编译教程

编译注意事项

  • 注意使用的交叉编译工具链,带hf不带hf的运行程序是由区别的,可能就无法运行程序(常见报错:no such file or directory),最好与编译内核源码使用同一个工具链cat /proc/version
  • arm-none-gnueabihf 和arm-linux-gnueabihf也是有区别的,带linux的是用于编译跑系统的app
  • 在主机上善用readelf -h app_name 读取编译出的信息用来对比开发板app,使用readelf -d libxx.so.xx |grep NEED读取依赖的库文件列表
  • 使用file xx.so.xx.xx读取库文件信息
  • 使用strings libxxx | grep GLIBC_读取libstd.xx的依赖版本
  • 使用set 命令读取环境变量信息,相对env命令更全面或者export -p
  • 编译选项GCC中-march、-mtune、-mcpu三个参数的设置
  • armv7-a与armv7区别

配置编译qt源码

  • 本文默认采用的编译器为arm-linux-gnueabi-gcc 版本为4.9.4,软浮点
  • armv7是指令集,cortex-a8构架的都用armv7指令集度娘
  • 这些编译选项最好对应硬件手册进行添加
  • 配置选项参考
  • 选项的约定:括号中的值,解释如下:
  • [ ]:内的内容意思是:可写可不写
  • { }:那就必须要在{ }内给出的选择里选一个
  • < >:表示必选
  • | (竖线) 分隔括号或大括号内的语法项目,只能选择一个项目
  • 以上是Linux中的常见约定
  • 下面是QT的约定:
    (以"-libpng… Select used libpng [system/qt/no]“为例)
    1)“yes"不用明确指出(-libpng),括号中其他的值可以作为前缀,如”-qt-libpng”;
    2)也可以用–libpng=qt的格式来表示
    3)“auto"是"yes"和"no"的简写,代表[yes/no]
    4)只出现"yes"或"no”,说明该选项不能自动检查,裁剪时要特别留意

复制以下脚本内容,保存为xxx.sh
xxx代表脚本名称,自己定义

#!/bin/sh
#只要shell脚本中发生错误,即命令返回值不等于0,则停止执行并退出shell
set -e
#不存在的变量则报错并停止执行shell
set -u
PLATFORM=linux-arm-qt
SCRIPT_PATH=`pwd`

#修改需要下载的源码前缀和后缀
OPENSRC_VER_PREFIX=5.12
OPENSRC_VER_SUFFIX=.7

#添加tslib交叉编译的动态库文件和头文件路径
TSLIB_LIB=/home/${USERNAME}/nfs/arm_tslib/lib/
TSLIB_INC=/home/${USERNAME}/nfs/arm_tslib/include/

#修改源码包解压后的名称
PACKAGE_NAME=qt-everywhere-src-5.12.7

#定义编译后安装--生成的文件,文件夹位置路径
INSTALL_PATH=/opt/QT_5.12.7_INSTALL

#编译工具链是否带hf,带则填入true
USE_HF_COMPILER=false

#添加交叉编译工具链路径 example:/home/aron566/opt/arm-2014.05/bin/arm-none-linux-gnueabi
CROSS_CHAIN_PREFIX=/usr/local/arm_4.9.4/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi

#是否启用tslib
ENABLE_TSLIB=true

#定义压缩包名称
COMPRESS_PACKAGE=${PACKAGE_NAME}.tar.xz

#无需修改--自动组合下载地址
OPENSRC_VER=${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX}
DOWNLOAD_LINK=http://download.qt.io/archive/qt/${OPENSRC_VER_PREFIX}/${OPENSRC_VER}/single/${COMPRESS_PACKAGE}
#无需修改--自动组合平台路径
CONFIG_PATH=${SCRIPT_PATH}/${PACKAGE_NAME}/qtbase/mkspecs/${PLATFORM}
#无需修改--自动组合配置平台路径文件
CONFIG_FILE=${CONFIG_PATH}/qmake.conf

#下载源码包
do_download_qt_every_src () {
   
 if [ ! -f "${COMPRESS_PACKAGE}" ];then
    if [ ! -d "${PACKAGE_NAME}" ];then
    	wget -c ${DOWNLOAD_LINK}
    fi
 fi
}

#解压源码包
do_tar_package () {
   
#if exist file then
 if [ ! -d "${PACKAGE_NAME}" ];then
		if [ -f "${COMPRESS_PACKAGE}" ];then
  		tar -xvf ${COMPRESS_PACKAGE}
 		else
			echo "\033[1;33m no such file or directory ...\033[0m"
			exit 65
		fi  
 fi
 echo "\033[1;33m start open source file ...\033[0m"
 cd ${PACKAGE_NAME}
}

#安装依赖项
do_install_config_dependent () {
   
 sudo apt install qt3d5-dev-tools -y
 sudo apt install qml-module-qtquick-xmllistmodel -y
 sudo apt install qml-module-qtquick-virtualkeyboard qml-module-qtquick-shapes qml-module-qtquick-privatewidgets qml-module-qtquick-dialogs qml-module- qt-labs-calendar qml -y
 sudo apt install libqt53dquickscene2d5 libqt53dquickrender5 libqt53dquickinput5 libqt53dquickextras5 libqt53dquickanimation5 libqt53dquick5 -y
 sudo apt install qtdeclarative5-dev qml-module-qtwebengine qml-module-qtwebchannel qml-module-qtmultimedia qml-module-qtaudioengine -y
}
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Qt是一种广泛使用的跨平台应用程序框架。本文将介绍如何在Ubuntu 18.04上交叉编译Qt 5.12.7的详细教程。 第一步是安装必要的依赖项。打开终端并输入以下命令: sudo apt-get update sudo apt-get install build-essential perl python git p7zip-full 接下来,你需要安装交叉编译工具链。在此示例中,我们将以ARM Cortex-A7为目标平台。 sudo apt-get install g++-arm-linux-gnueabihf libc6-armhf-cross-armel-cross binutils-arm-linux-gnueabihf 然后,创建一个新的目录并切换到该目录中,然后从Qt官方网站上下载最新的Qt源代码: mkdir qt-cross-compile && cd qt-cross-compile wget https://download.qt.io/archive/qt/5.12/5.12.7/single/qt-everywhere-src-5.12.7.tar.xz tar xvf qt-everywhere-src-5.12.7.tar.xz 接下来,创建一个称为“qt5-armhf.conf”的新文件,需要根据目标平台进行相应的更改: cd qt-everywhere-src-5.12.7/qtbase/mkspecs cp -r linux-arm-gnueabi-g++/ qt5-armhf cd qt5-armhf vi qmake.conf 确保以下行已正确配置: 将“QMAKE_CFLAGS”和“QMAKE_CXXFLAGS”修改为: QMAKE_CFLAGS = -march=armv7-a -mtune=cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard --sysroot=/usr/arm-linux-gnueabihf/ QMAKE_CXXFLAGS = $$QMAKE_CFLAGS 对于“QMAKE_LINK”和“QMAKE_LINK_SHLIB”,添加以下行: QMAKE_LINK = arm-linux-gnueabihf-g++ QMAKE_LINK_SHLIB = $$QMAKE_LINK 接下来,进入Qt源代码目录并构建一个交叉编译版本: cd ../../.. ./configure -prefix /opt/qt5-armhf -static -opensource -confirm-license -release -skip webengine -skip wayland -skip qtgamepad make -j4 接下来,安装Qt到目标目录: sudo make install 完成后,你可以在目标文件夹/opt/qt5-armhf找到已安装的Qt库。现在你可以使用Qt Creator或手动创建项目并在Ubuntu 18.04中进行交叉编译
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aron566

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值