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 内即可