1.RK3588开发笔记(一):基于方案商提供的源码宿主机交叉编译Qt5.12.10
2.win10 cmake源码编译安装opencv(c++,qt)(解决ffmpeg下载失败导致opencv无法处理视频)
3.QT源码编译成静态库
4.2 Qt+OpenGL环境搭建与基本理解
5.Qt Embedded:简介与平台插件介绍
RK3588开发笔记(一):基于方案商提供的宿主机交叉编译Qt5.12.10
本文旨在详细记录RK开发车机时,针对未预编译Qt5..版本的编译宿主机环境,进行自行交叉编译Qt系统的源码操作过程。通过以下步骤,编译我们可以实现Qt系统的源码顺利安装与使用,为后续的编译广东源码时代开发工作奠定基础。
首先,源码我们对宿主机进行准备。编译下载并运行宿主机,源码注意该环境仅提供SDK,编译但未包含交叉编译Qt的源码版本。
接下来,编译下载Qt5..的源码开源软件,作为后续编译的编译基础。同时,源码下载并准备交叉编译工具链以及目标编译系统所需的sysroot文件系统,确保所有依赖均已就绪。
正式进入交叉编译Qt的流程。我们首先解压编译工具链,通过对比发现,虽然单独提供的工具链中缺少bin目录下的g++工具,但实际开发板提供的SDK中包含该组件,因此我们选择复制SDK中的网站源码模板建站bin目录内容,以确保g++工具可用。
为了方便后续操作,建立一个env.sh脚本,引入交叉编译工具链。通过source env.sh命令激活环境,确保路径正确设置,便于后续编译操作。注意,环境配置时需与方案提供的平台相匹配,确保编译过程顺利进行。
紧接着,解压qt源码并进入配置阶段。在qt-everywhere-src-5..目录下,修改平台配置文件,指定编译器名称、配置选项以及目标平台等关键信息。使用bash脚本方式构建配置文件,简化操作流程,如:
#!/bin/bash
./configure \
-prefix /home/ht/work/build-qt5.. \
-sysroot /home/ht/work/sysroot \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch-gnu-g++ \
-no-opengl \
-no-feature-completer \
-verbose
配置完成并保存后,运行脚本执行编译操作。在编译过程中,可能出现路径错误等问题,免费源码好网站如用户路径设置问题,应根据实际情况进行调整。
编译工作完成后,进行Qt的安装。通过执行make install命令,将Qt系统安装至指定目录,至此,Qt5..的交叉编译过程顺利完成。
win cmake源码编译安装opencv(c++,qt)(解决ffmpeg下载失败导致opencv无法处理视频)
要使用Qt与Windows上的OpenCV,当默认的msvc版本不满足需求时,需要通过源码编译安装,并配合cmake工具。以下是详细的步骤:
首先,下载OpenCV sources版本,同时确保已经安装了cmake编译工具,这里推荐选择对应版本的MinGW版本。在Qt的mingw环境中,需将mingw的bin路径(例如:D:\Programs\Qt\Qt5..\Tools\mingw_\bin)添加到环境变量,验证配置成功可通过在cmd中输入gcc -v。
解压OpenCV到指定位置,创建一个build文件夹。使用cmake-gui,源码安装php 7.4设置源码路径和build文件夹,配置为MinGW Makefiles。初次配置可能遇到问题,如ffmpeg下载失败,这时需要重命名ffmpeg.cmake为ffmpeg.txt,修改其中的下载地址为/。
在cmake-gui中,勾选with_qt和with_opengl,取消opencv_enable_allocator_stats和与python相关的选项。如果需要python支持,可以使用pip安装。配置完成后,再次点击configure并生成makefile,确保所有路径正确。
在build文件夹中,通过mingw-make -j(根据你的CPU核心数设置线程数,例如)开始编译,最后执行mingw-make install。安装后,别忘了将安装路径(如D:\Programs\opencv3.4.\build\install\x\mingw\bin)添加到系统环境变量。
通过这些步骤,你就可以在Qt环境中成功安装并使用OpenCV处理视频了,php使用dnspod源码无需担心ffmpeg下载失败的问题。
QT源码编译成静态库
QT源码庞大,通常使用现成的动态库。但基于QT开发SDK或在LINUX上使用QT框架时,静态库成为更优选择。静态库提供单一DLL,减少客户依赖,简化LINUX下的打包和配置。
获取QT源码,可从官网下载或通过安装包选择源码安装。配置命令包括:-prefix指定安装路径,-debug-and-release同时编译debug和release版本,-opensource和-confirm-license确认开源许可,-static生成静态库,-qt-xcb和-no-opengl分别针对LINUX和虚拟机需求,-nomake忽略示例和测试程序。配置缓存管理,每次修改需备份并重新配置源码。
Windows下编译时,-MD和-MT是运行库配置。MD编译生成小文件,但需额外依赖库;MT编译将依赖嵌入,文件较大但直接运行无需额外依赖。根据需求选择编译方式。静态库编译调整方法:在"qtbase\mkspecs\common"下的"msvc-desktop.conf"文件中,修改MD为MT。
LINUX下配置需要先安装xcb相关库以解决配置失败问题,再安装libx-dev解决缺少X头文件错误。Windows下编译使用对应VS命令,位使用x,位使用x。
静态库使用需注意:在QTCreator中添加QT静态库套件并选择对应编译器版本。除依赖的QT静态库外,还需添加缺少接口的系统库。Linux下使用QT静态库编译的界面程序需添加.ttf文件支持文字显示。若需双击运行Linux程序,可在工程文件中添加QMAKE_LFLAGS += -no-pie。
LINUX程序依赖库不在当前目录查找,为避免GLIBC和GLIBCXX版本不兼容问题,建议使用较低版本的Linux系统进行编译。
以上总结了在编译和使用QT静态库时遇到的一些问题,希望能对大家有所助益。
2 Qt+OpenGL环境搭建与基本理解
前往Qt官网下载并安装Qt,选择包含Source选项以备查阅Qt源码。开始编写第一个Qt OpenGL程序,参考QOpenGL入门教程和Italink/QtOpenGL-Essential-Training中的经验总结。前置学习推荐LearnOpenGL CN。制作Hello World效果的OpenGL程序。若遇到找不到OpenGL相关头文件的问题,更新Qt版本至6,调整路径。使用CMake工程时,确保链接OpenGL包。顶点着色器找不到gl_Position变量的难题,通过在qmake工程中设置解决。对比glfw3.h提供的OpenGL接口与Qt自定义类继承QOpenGLFunctions或其子类QOpenGLExtraFunctions的封装,Qt的接口作为成员函数使用。Qt源码查看方法,首先在安装时选择Source选项或安装后使用Qt Maintenance Tool添加,配置定位器搜索到Qt源码路径并直接在主界面左下角搜索需要查看的源码文件。获取Qt中的OpenGL版本,通过C++方式实现。Qt对Shader的封装QOpenGLShaderProgram与OpenGL接口存在一定距离,推荐直接使用QOpenGLFunctions、QOpenGLExtraFunctions提供的接口进行Shader编程。下一节将移植LearnOpenGL中的Shader至Qt环境中。
Qt Embedded:简介与平台插件介绍
嵌入式Linux图形界面包括Qt/Embedded、DirectFB、MicroWindows/NanoX、MiniGUI和OpenGUI等,各有特点和应用场合。Qt在嵌入式环境中的分支平台Qt/E,通过调整原始Qt以节省内存,摒弃Xlib,采用Framebuffer作为底层图形接口,简化应用程序直接写入内核帧缓冲的操作。
Qt/E的编译流程需下载源代码,使用交叉编译器编译生成Qt库,库需在开发主机和目标板上各保留一份,供编译和运行时动态加载使用。此过程需具备Qt源代码、交叉编译器以及创造性思维。移植Qt/E至硬件平台时,先编译Qt库,然后将库复制至开发主机与目标板。使用命令行参数或环境变量配置移植过程。
Qt/E在嵌入式Linux设备上可使用多种平台插件,如EGLFS、LinuxFB、DirectFB、Wayland等,选择依据Qt配置。EGLFS是Qt5应用运行的默认平台插件,支持OpenGL ES2.0,通过硬件加速提供渲染,推荐在具备GPU的现代嵌入式设备上使用。EGLFS配置环境变量可调整显示参数,如日志记录、清屏行为等。LinuxFB通过Linux fbdev子系统直接写入帧缓冲区,仅支持软件渲染,使用环境变量配置显示参数,如指定fb设备。DirectFB为轻量级图形库,提供硬件加速、多层显示和输入设备处理,适用于嵌入式系统,支持多种显示卡、输入设备及图像文件格式。XCB插件在具备X和XCB开发文件的嵌入式环境中提供与桌面Linux平台相似的功能。Wayland作为一种轻量级窗户系统,Qt提供Wayland平台插件,允许Qt应用程序连接到Wayland合成器。
配置环境变量时,以树莓派为例,追加内容到/etc/profile,根据需求修改。字体配置通常使用fontconfig访问系统字体,若不可用则退回到QBasicFontDatabase,通过QT_QPA_FONTDIR环境变量覆盖字体目录。Qt不再在lib/fonts目录提供字体,由平台提供必要字体。
Unix信号处理程序默认捕获中断、暂停、继续和终止信号,通过QT_QPA_ENABLE_TERMINAL_KEYBOARD设置允许通过键盘终止或挂起程序。在某些情况下,捕获SIGINT可能与远程调试冲突,可通过QT_QPA_NO_SIGNAL_HANDLER环境变量退出内置信号处理。
2024-11-30 07:14
2024-11-30 07:09
2024-11-30 07:08
2024-11-30 06:46
2024-11-30 06:32
2024-11-30 06:02
2024-11-30 05:41
2024-11-30 05:34