zynq qt 交叉编译

1 环境:ubuntu 23.4,vitis/vivado 2022.2 ;petalinux 2023.2

2,配置qt

Xilinx 官方是自带有qt的,petalinux-config -c rootfs 这一步里面有配置qt ,但是实际操作下来,总是报错。

综合考虑之后选择从qt官网下载文件进行交叉编译。参考xilinx 官方的方式以及其他类似arm 版。xilinx 官方说明链接如下:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842110/Qt+Qwt+Build+Instructions+Qt+5.4.2+Qwt+6.1.2

从qt官方下载的是qt-everywhere-opensource-src-5.15.4.tar.xz。选择5.15.4版本是因为petalinux 生成的根文件系统所带的qt是这个版本,qt6担心不配合。

下载tslib。因为可能需要开发触摸屏,需要点击则要这个开源的触摸库tslib。

交叉编译tslib 见https://www.codeleading.com/article/60885687722/

交叉编译

qt-everywhere-opensource-src-5.15.4.tar.xz 解压后进入qtbase/mkspecs 文件夹,新建arm-linux-gnueabihf-g++ 文件夹。

新建qmake.conf 文件,编译器gcc,g++ 的路径都是绝对路径:

qmake configuration for building with arm-xilinx-linux-gnueabi-g++

MAKEFILE_GENERATOR = UNIX

CONFIG += incremental

QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)

include(../common/gcc-base-unix.conf)

include(../common/g++-unix.conf)

modifications to g++.conf

QMAKE_CC = /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gcc

QMAKE_CXX = /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++

QMAKE_LINK = /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++

QMAKE_LINK_SHLIB = /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g++

modifications to linux.conf

QMAKE_AR = /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ar cqs

QMAKE_OBJCOPY = /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-objcopy

QMAKE_NM = /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-nm -P

QMAKE_STRIP = /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-strip

load(qt_config)

复制官方qplatformdefs.h文件,没有改。。

编译过程参照QT 官方的说明,以及下文:

++https://blog.csdn.net/DreamerPerple/article/details/138016216++。

Qt 编译脚本如下:其中 -prefix 选项是生成路径,-xplatform是编译平台

#!/bin/bash

./configure -prefix /home/xxx/Desktop/zynqqt/qt_install \

-xplatform arm-linux-gnueabihf-g++ \

-opensource \

-confirm-license \

-release \

-strip \

-shared \

-optimized-qmake \

-c++std c++11 \

--rpath=no \

-pch \

-skip qt3d \

-skip qtactiveqt \

-skip qtandroidextras \

-skip qtcanvas3d \

-skip qtconnectivity \

-skip qtdatavis3d \

-skip qtdoc \

-skip qtgamepad \

-skip qtlocation \

-skip qtmacextras \

-skip qtnetworkauth \

-skip qtpurchasing \

-skip qtremoteobjects \

-skip qtscript \

-skip qtscxml \

-skip qtsensors \

-skip qtspeech \

-skip qtsvg \

-skip qttools \

-skip qttranslations \

-skip qtwayland \

-skip qtwebengine \

-skip qtwebview \

-skip qtwinextras \

-skip qtx11extras \

-skip qtxmlpatterns \

-skip qtdeclarative \

-make libs \

-make examples \

-nomake tools -nomake tests \

-gui \

-widgets \

-dbus-runtime \

--glib=no \

--iconv=no \

--pcre=qt \

--zlib=qt \

-no-openssl \

--freetype=qt \

--harfbuzz=qt \

-no-opengl \

-linuxfb \

--xcb=no \

--libpng=qt \

--libjpeg=qt \

--sqlite=qt \

-tslib \

-plugin-sql-sqlite \

-I /home/mac-ding/Desktop/zynqqt/tslib/arm_tslib/include \

-L /home/mac-ding/Desktop/zynqqt/tslib/arm_tslib/lib \

-recheck-all

6,完成。后续放入linux 内即可

相关推荐
Wang's Blog1 小时前
Go-Zero项目开发33: IM实时通信前后端对接与微服务基础设施实践
开发语言·微服务·golang·go-zero
SelectDB技术团队1 小时前
丰巢日志平台 ELK 替代:Apache Doris / SelectDB 的技术能力与实践
开发语言·python
BetterFlow_CFD1 小时前
COMSOL声学仿真基础知识(二)
开发语言·算法·matlab
麻瓜老宋1 小时前
AI开发C语言应用按步走,表达式计算器calc的第十九步,注释、表达式分隔符、long double 精度
c语言·开发语言·atomcode
崖边看雾1 小时前
Python学习——函数
开发语言·windows·python·学习·pycharm
宸津-代码粉碎机2 小时前
Jar热部署进阶实战|修复原生方案OOM与类冲突问题,生产级无BUG优化方案
java·大数据·服务器·开发语言·前端·人工智能·python
互联网中的一颗神经元12 小时前
小白python入门 - 39. 采集流水线小项目
开发语言·python
Wang's Blog13 小时前
Go-Zero 项目开发22:用户群聊功能的实现与完善
开发语言·golang
a11177613 小时前
坦克大战3D Three.js 3D (开源项目)
开发语言·javascript·3d