news 2026/7/28 2:13:18

zynq qt 交叉编译

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 内即可


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 2:10:57

Vue3全家桶核心技术与实战指南

1. Vue3全家桶深度解析与实践指南作为前端开发者,我们正处在一个技术快速迭代的时代。Vue3自2020年正式发布以来,凭借其卓越的性能优化和更灵活的Composition API,已经成为现代Web开发的首选框架之一。但真正要在项目中用好Vue3,仅…

作者头像 李华
网站建设 2026/7/28 2:06:25

AI如何提升学术写作规范与效率

1. 项目概述:当AI遇上学术写作去年帮导师审稿时,我注意到一个有趣现象:超过60%的论文被拒稿并非因为研究质量,而是写作规范问题。从文献引用格式到术语一致性,这些"低级错误"往往让优秀研究功亏一篑。这正是…

作者头像 李华
网站建设 2026/7/28 2:03:44

C++继承机制:原理、实践与性能优化

1. 继承机制的本质与价值在C面向对象编程中,继承就像家族基因的传递。基类(父类)将特征传递给派生类(子类),这种机制让代码获得了天然的层次结构。我见过太多项目因为滥用继承而变得难以维护,也…

作者头像 李华
网站建设 2026/7/28 2:03:01

ClickHouse merge引擎详解以及应用

一、理解 Merge引擎 (通常用于系统表,非用户数据) 用途:​ Merge引擎本身不存储数据,它的主要作用是提供对多个底层表(通常是结构相同的 MergeTree表)的统一查询视图,可以将它看作一个逻辑上的联合查询器 工作机制: 指定一个数据库和一个用于匹配表名的正则表达式&…

作者头像 李华
网站建设 2026/7/28 2:02:08

5个惊艳功能:Goose桌面应用如何彻底改变你的AI工作方式

5个惊艳功能:Goose桌面应用如何彻底改变你的AI工作方式 【免费下载链接】goose an open source, extensible AI agent that goes beyond code suggestions - install, execute, edit, and test with any LLM 项目地址: https://gitcode.com/GitHub_Trending/goose…

作者头像 李华