zynq qt 交叉编译
1 环境ubuntu 23.4,vitis/vivado 2022.2 ;petalinux 2023.22,配置qtXilinx 官方是自带有qt的petalinux-config -c rootfs 这一步里面有配置qt 但是实际操作下来总是报错。综合考虑之后选择从qt官网下载文件进行交叉编译。参考xilinx 官方的方式以及其他类似arm 版。xilinx 官方说明链接如下https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18842110/QtQwtBuildInstructionsQt5.4.2Qwt6.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 UNIXCONFIG incrementalQMAKE_INCREMENTAL_STYLE sublibinclude(../common/linux.conf)include(../common/gcc-base-unix.conf)include(../common/g-unix.conf)# modifications to g.confQMAKE_CC /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gccQMAKE_CXX /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gQMAKE_LINK /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-gQMAKE_LINK_SHLIB /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-g# modifications to linux.confQMAKE_AR /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-ar cqsQMAKE_OBJCOPY /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-objcopyQMAKE_NM /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-nm -PQMAKE_STRIP /tools/Xilinx/Vitis/2022.2/gnu/aarch32/lin/gcc-arm-linux-gnueabi/bin/arm-linux-gnueabihf-stripload(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 \-cstd c11 \--rpathno \-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 \--glibno \--iconvno \--pcreqt \--zlibqt \-no-openssl \--freetypeqt \--harfbuzzqt \-no-opengl \-linuxfb \--xcbno \--libpngqt \--libjpegqt \--sqliteqt \-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-all6完成。后续放入linux 内即可