编译 ARM 平台 Qt5.12.9 源码-思维导图-学习笔记-基于正点原子阿尔法开发板

编译 ARM 平台 Qt5.12.9 源码

在这里插入图片描述

概述

库的后缀名

  • Windows平台:编译出的Qt库文件后缀为.dll

  • Linux平台:编译出的Qt库文件后缀为.so

这些库被称为动态库,意味着它们在运行时被加载到应用程序中,而不是在编译时静态链接

库的作用

  • 运行Qt应用程序:Qt应用程序需要链接到这些动态库上,以确保应用程序能够访问必要的功能和资源

  • 确保正常运行:动态库的存在是Qt应用程序能够正常运行的关键,因为它们提供了应用程序所需的核心功能和接口

下载 Qt5.12.9 源码

下载地址

  • Qt下载地址为:https://download.qt.io/

  • 具体版本下载地址为:https://download.qt.io/archive/qt/5.12/5.12.9/single/

下载步骤

  • 在Windows上下载

    • 下载文件名为qt-everywhere-src-5.12.9.tar.xz

    • 下载后将源码拷贝到Ubuntu虚拟机

  • 在Ubuntu上下载

    • 直接右键复制下载地址链接

    • 使用wget指令下载源码

      • wget https://download.qt.io/archive/qt/5.12/5.12.9/single/qt-everywhere-src-5.12.9.tar.xz
  • 解压缩

    • tar xf qt-everywhere-src-5.12.9.tar.xz
  • 进入解压后的目录

    • cd qt-everywhere-src-5.12.9/

    • ls

修改 qmake.conf

编辑配置文件

  • 编辑mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf文件

  • 配置相关编译器及路径

常因复制文档时格式错误或手动输入错误而导致配置出错

  • 为避免上述问题,正点原子将正确配置文件上传至gitee,用户可直接下载

  • gitee下载路径为:https://gitee.com/QQ1252699831/qt5.12.9-conf.git

下载配置文件

  • 可以直接在gitee上下载这个qmake.conf文件

    • 下载完后拷贝至目录下

编辑文件操作

  • 使用vi编辑器编辑下载到的配置文件

    • vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
  • 修改成如下,红色加粗部分就是要修改的地方

配置编译选项

查看编译选项

  • 使用指令./configure -help查看可配置选项

    • ./configure -help

正点原子总结了常用的配置项,并编写了一个脚本以简化配置过程

  • 可以直接在gitee上下载autoconfigure.sh脚本

    • 下载完后拷贝至目录下
  • 下载之后需要修改脚本中的路径,以适配用户的环境

    • vi autoconfigure.sh

    • /home/alientek/ qt-everywhere-src-5.12.9/arm-qt 为编译输出路径

    • /home/alientek/tslib-1.21/arm-tslib/include 为tslib头文件路径

    • /home/alientek/tslib-1.21/arm-tslib/lib 为tslib相关库文件路径

赋予脚本可执行权限

  • chmod +x autoconfigure.sh

执行脚本

  • 配置前确保已安装g++

    • sudo apt-get install g++
  • 直接执行autoconfigure.sh脚本

    • ./autoconfigure.sh

正在配置编译项

  • 若未见此信息,检查个人配置

  • 配置成功

开始编译 Qt5.12.9 源码

安装Python环境

  • sudo apt-get install python

编译

  • make -j 16

    • -j 16 代表最多允许 16 条编译指令同时运行,参数 16,一般为个人分配给虚拟机的核心数的 2 倍

执行安装指令后,查看安装后的内容

  • make install

  • ls arm-qt

  • 安装完成

Building on: linux-g++ (x86_64, CPU features: mmx sse sse2) Building for: linux-aarch64-gnu-g++ (arm64, CPU features: neon) Target compiler: gcc 6.3.1 Configuration: cross_compile use_gold_linker compile_examples enable_new_dtags largefile neon precompile_header shared rpath release c++11 c++14 concurrent dbus reduce_exports stl Build options: Mode ................................... release Optimize release build for size ........ no Building shared libraries .............. yes Using C standard ....................... C11 Using C++ standard ..................... C++14 Using ccache ........................... no Using gold linker ...................... yes Using new DTAGS ........................ yes Using precompiled headers .............. yes Using LTCG ............................. no Target compiler supports: NEON ................................. yes Build parts ............................ libs Qt modules and options: Qt Concurrent .......................... yes Qt D-Bus ............................... yes Qt D-Bus directly linked to libdbus .... no Qt Gui ................................. yes Qt Network ............................. yes Qt Sql ................................. yes Qt Testlib ............................. yes Qt Widgets ............................. yes Qt Xml ................................. yes Support enabled for: Using pkg-config ....................... yes udev ................................... no Using system zlib ...................... yes Qt Core: DoubleConversion ....................... yes Using system DoubleConversion ........ no GLib ................................... no iconv .................................. yes ICU .................................... no Tracing backend ........................ Logging backends: journald ............................. no syslog ............................... no slog2 ................................ no Using system PCRE2 ..................... no Qt Network: getifaddrs() ........................... yes IPv6 ifname ............................ yes libproxy ............................... no Linux AF_NETLINK ....................... yes OpenSSL ................................ yes Qt directly linked to OpenSSL ........ no OpenSSL 1.1 ............................ no DTLS ................................... yes SCTP ................................... no Use system proxies ..................... yes Qt Gui: Accessibility .......................... yes FreeType ............................... yes Using system FreeType ................ no HarfBuzz ............................... yes Using system HarfBuzz ................ no Fontconfig ............................. no Image formats: GIF .................................. yes ICO .................................. yes JPEG ................................. yes Using system libjpeg ............... yes PNG .................................. yes Using system libpng ................ no EGL .................................... no OpenVG ................................. no OpenGL: Desktop OpenGL ....................... no OpenGL ES 2.0 ........................ no OpenGL ES 3.0 ........................ no OpenGL ES 3.1 ........................ no OpenGL ES 3.2 ........................ no Vulkan ................................. no Session Management ..................... yes Features used by QPA backends: evdev .................................. yes libinput ............................... no INTEGRITY HID .......................... no mtdev .................................. no tslib .................................. no xkbcommon .............................. no X11 specific: XLib ................................. no EGL on X11 ........................... no QPA backends: DirectFB ............................... no EGLFS .................................. no LinuxFB ................................ yes VNC .................................... yes Mir client ............................. no Qt Sql: SQL item models ........................ yes Qt Widgets: GTK+ ................................... no Styles ................................. Fusion Windows Qt PrintSupport: CUPS ................................... no Qt Sql Drivers: DB2 (IBM) .............................. no InterBase .............................. no MySql .................................. no OCI (Oracle) ........................... no ODBC ................................... no PostgreSQL ............................. no SQLite2 ................................ no SQLite ................................. yes Using system provided SQLite ......... no TDS (Sybase) ........................... no Qt Testlib: Tester for item models ................. yes Qt SerialBus: Socket CAN ............................. yes Socket CAN FD .......................... yes Qt QML: QML network support .................... yes QML debugging and profiling support .... yes QML sequence object .................... yes QML list model ......................... yes QML XML http request ................... yes QML Locale ............................. yes QML delegate model ..................... yes Qt Quick: Direct3D 12 ............................ no AnimatedImage item ..................... yes Canvas item ............................ yes Support for Qt Quick Designer .......... yes Flipable item .......................... yes GridView item .......................... yes ListView item .......................... yes TableView item ......................... yes Path support ........................... yes PathView item .......................... yes Positioner items ....................... yes Repeater item .......................... yes ShaderEffect item ...................... yes Sprite item ............................ yes Qt Scxml: ECMAScript data model for QtScxml ...... yes Qt Gamepad: SDL2 ................................... no Qt 3D: Assimp ................................. yes System Assimp .......................... no Output Qt3D Job traces ................. no Output Qt3D GL traces .................. no Use SSE2 instructions .................. no Use AVX2 instructions .................. no Aspects: Render aspect ........................ yes Input aspect ......................... yes Logic aspect ......................... yes Animation aspect ..................... yes Extras aspect ........................ yes Qt 3D Renderers: OpenGL Renderer ........................ yes Qt 3D GeometryLoaders: Autodesk FBX ........................... no Qt Wayland Client ........................ no Qt Wayland Compositor .................... no Qt Bluetooth: BlueZ .................................. no BlueZ Low Energy ....................... no Linux Crypto API ....................... no WinRT Bluetooth API (desktop & UWP) .... no Qt Sensors: sensorfw ............................... no Qt Quick Controls 2: Styles ................................. Default Fusion Imagine Material Universal Qt Quick Templates 2: Hover support .......................... yes Multi-touch support .................... yes Qt Positioning: Gypsy GPS Daemon ....................... no WinRT Geolocation API .................. no Qt Location: Qt.labs.location experimental QML plugin . yes Geoservice plugins: OpenStreetMap ........................ yes HERE ................................. yes Esri ................................. yes Mapbox ............................... yes MapboxGL ............................. no Itemsoverlay ......................... yes QtXmlPatterns: XML schema support ..................... yes Qt Multimedia: ALSA ................................... no GStreamer 1.0 .......................... no GStreamer 0.10 ......................... no Video for Linux ........................ yes OpenAL ................................. no PulseAudio ............................. no Resource Policy (libresourceqt5) ....... no Windows Audio Services ................. no DirectShow ............................. no Windows Media Foundation ............... no Qt Tools: QDoc ................................... no Qt WebEngine: Embedded build ......................... yes Pepper Plugins ......................... no Printing and PDF ....................... no Proprietary Codecs ..................... no Spellchecker ........................... yes Native Spellchecker .................... no WebRTC ................................. no Use System Ninja ....................... no Geolocation ............................ yes WebChannel support ..................... yes Use v8 snapshot ........................ yes Kerberos Authentication ................ no Building v8 snapshot supported ......... yes Use ALSA ............................... no Use PulseAudio ......................... no Optional system libraries used: re2 .................................. no icu .................................. no libwebp, libwebpmux and libwebpdemux . no opus ................................. no ffmpeg ............................... no libvpx ............................... no snappy ............................... no glib ................................. no zlib ................................. yes minizip .............................. no libevent ............................. no jsoncpp .............................. no protobuf ............................. no libxml2 and libxslt .................. no lcms2 ................................ no png .................................. no JPEG ................................. no harfbuzz ............................. no freetype ............................. no x11 .................................. no Required system libraries: fontconfig ........................... no dbus ................................. no nss .................................. no khr .................................. no glibc ................................ yes Required system libraries for qpa-xcb: libdrm ............................... no xcomposite ........................... no xcursor .............................. no xi ................................... no xrandr ............................... no xtst ................................. no Note: Also available for Linux: linux-clang linux-icc
### 回答1: 首先,需要明确的是,树莓派4B是基于ARM架构的单板计算机,而Qt是一个跨平台的应用程序框架,支持多种操作系统和硬件平台。交叉编译是指在一台主机上编译适用于另一种不同的平台的程序。 要在树莓派4B上交叉编译Qt 5.12.9并支持OpenGL,需要按照以下步骤进行: 1. 准备交叉编译环境: - 在主机上安装交叉编译工具链,该工具链应该是针对ARM架构的。你可以在树莓派官网上找到相应的工具链。 - 下载Qt 5.12.9源代码并解压到主机上。可以从Qt官网下载源代码。 2. 配置编译环境: - 进入Qt源代码目录,运行`./configure`命令来配置编译选项。 - 设置交叉编译工具链路径,例如:`./configure -xplatform linux-arm-gnueabi-g++ -device linux-rasp-pi4-g++ -sysroot /path/to/sysroot`。 - 如果需要使用OpenGL,确保在配置选项中启用OpenGL相关选项,例如:`-opengl es2 -device-option CROSS_COMPILE=/path/to/cross-compiler`。 3. 编译和安装Qt: - 运行`make`命令开始编译Qt。这个过程可能会耗费一些时间,请耐心等待。 - 编译完成后,运行`make install`命令来安装Qt到指定目录。 4. 在树莓派上部署和测试: - 将编译好的Qt安装目录复制到树莓派上。 - 在树莓派上编写一个简单的Qt程序,并尝试运行以验证交叉编译是否成功,并且能够使用OpenGL功能。 需要注意的是,以上步骤只是一个简要的概述,实际操作可能会因为环境和配置的不同而有所不同。在进行此过程时,建议参考Qt的官方文档和树莓派相关的论坛、社区以获得更具体的指导和帮助。 ### 回答2: 树莓派4B 是一款强大的单板计算机,由于其资源受限,为了满足更高的性能需求,可以使用交叉编译技术在其他主机上编译运行Qt 5.12.9和OpenGL。 首先,我们需要准备一个具备足够性能的主机,用于进行交叉编译。这个主机可以是一台电脑或服务器,确保其硬件配置和性能足够强大。 接下来,我们需要在主机上安装交叉编译工具链。交叉编译工具链包括交叉编译器、交叉链接器和交叉工具等。可以根据所使用的操作系统,在主机上下载相应的交叉编译工具链。 然后,我们将Qt 5.12.9和OpenGL源代码下载到主机上。确保选取适用于树莓派4B的源代码版本,并将其解压到合适的目录中。 接着,我们可以创建一个交叉编译的目录,用于存放编译生成的可执行文件。进入该目录,并配置Qt和OpenGL的编译选项。一般情况下,我们需要指定交叉编译器、库的路径和安装的目标路径等。 然后,我们可以执行编译命令,开始交叉编译Qt和OpenGL。编译过程需要耐心等待,具体时间取决于主机的性能和网络速度。 最后,编译完成后,我们将生成的可执行文件拷贝到树莓派4B上,并安装所需的依赖库。通过相关命令启动程序,即可在树莓派4B上运行Qt 5.12.9和OpenGL应用程序。 总之,树莓派4B的交叉编译需要在性能强大的主机上进行,下载并配置好对应的交叉编译工具链,在主机上完成Qt 5.12.9和OpenGL的编译,然后将生成的可执行文件拷贝到树莓派4B上即可运行。这样可以满足树莓派4B的高性能需求,并享受到Qt和OpenGL的开发和应用的乐趣。 ### 回答3: 树莓派4B是一款强大的嵌入式系统开发板,我们可以通过交叉编译的方式在树莓派上安装和运行Qt5.12.9及其相关的OpenGL库。 首先,我们需要在PC机上准备好交叉编译环境。在电脑上安装好相应版本的Qt Creator,并下载好树莓派的交叉编译工具链。 接下来,我们需要下载Qt5.12.9源码,并进行配置和编译。在命令行中进入Qt源码根目录,执行以下命令: ``` ./configure -opengl es2 -device linux-rasp-pi4-v3d-g++ -device-option CROSS_COMPILE=xxx- ``` 其中,`xxx-`是你的交叉编译工具链的前缀,例如`arm-linux-gnueabihf-`。 配置完成后,执行`make -j4`命令进行编译。这里的`-j4`可以使用多线程加速编译过程,具体线程数量可以根据你的电脑配置进行调整。 编译完成后,可以将生成的Qt安装到树莓派的系统目录中。首先,将树莓派连接到电脑上,然后通过SSH登录到树莓派的终端。 在终端中执行以下命令: ``` make install ``` 这将会将编译好的Qt安装到树莓派的系统目录中。 接下来,我们需要安装OpenGL相关的库。在树莓派的终端中执行以下命令: ``` sudo apt-get install libgles2-mesa-dev ``` 这将会安装OpenGL ES 2.0 的开发包。 最后,我们可以在Qt Creator中新建一个项目,并将其部署到树莓派上进行运行调试。在Qt Creator的编译选项中,选择交叉编译工具链,并设置好Qt的安装路径以及树莓派的IP地址。 配置完成后,点击我点击“运行”即可开始在树莓派上运行Qt应用程序,并享受Qt5.12.9的强大功能以及OpenGL的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木不迷茫(˵¯͒¯͒˵)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值