问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

鲁班猫板卡上的Qt静态编译技巧

创作时间:
2025-01-22 21:37:56
作者:
@小白创作中心

鲁班猫板卡上的Qt静态编译技巧

01

鲁班猫板卡简介

鲁班猫板卡是野火科技基于RockChip RK3588S设计的一款高性能嵌入式开发板。其硬件配置如下:

  • CPU:四核A76+四核A55的八核架构
  • GPU:集成Mali-G610
  • NPU:内置6T算力
  • 内存:可选4GB或8GB LPDDR4X
  • 存储:支持32GB、64GB或128GB eMMC
  • 接口:包括千兆网口、USB3.0、HDMI2.1、MIPI-DSI/CSI等

操作系统方面,鲁班猫板卡运行Linux内核5.10.160版本,支持通过U-Boot进行网络启动(tftp)。

02

Qt静态编译的必要性

在嵌入式设备上进行Qt静态编译具有以下优势:

  1. 减少依赖:静态编译后的程序不依赖于外部动态链接库,便于在资源受限的嵌入式环境中运行。

  2. 提高性能:静态编译可以针对特定硬件进行优化,提高程序执行效率。

  3. 简化部署:生成的可执行文件可以直接运行,无需担心库文件的兼容性问题。

03

静态编译的具体步骤

1. 安装开发工具和库

在Ubuntu主机上安装必要的开发工具:

sudo apt-get update
sudo apt-get install build-essential qtcreator qmake libx11-dev libxext-dev libxtst-dev libgl1-mesa-dev libglu1-mesa-dev libxkbcommon-x11-dev openssl flex bison perl python3

2. 编译tslib

Qt在嵌入式设备上需要tslib支持触摸功能。首先安装tslib编译所需的工具:

sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool

然后下载tslib源码并解压:

tar -vxjf tslib-1.21.tar.bz2

进入tslib源码目录进行编译:

cd tslib-1.21/
./autogen.sh
./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/andyxi/linux/tool/tslib-1.21/arm-tslib
make
make install

3. 配置Qt源码

下载Qt5.12.9源码并解压:

tar -xvf qt-everywhere-src-5.12.9.tar.xz

进入解压后的目录,修改qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf文件,添加以下内容:

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard

4. 配置编译选项

创建一个autoconfigure.sh脚本,内容如下:

./configure -prefix /home/andyxi/linux/qt/qt-everywhere-src-5.12.9/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-static \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-c++std c++11 \
--rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcharts \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmultimedia \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtquick3d \
-skip qtquicktimeline \
-skip qtremoteobjects \
-skip qtscxml \
-skip qtsensors \
-skip qtserialbus \
-skip qtserialport \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtvirtualkeyboard \
-skip qtwayland \
-skip qtwebchannel \
-skip qtwebengine \
-skip qtwebsockets \
-skip qtwebview

运行该脚本进行配置,然后编译和安装:

make -j$(nproc)
sudo make install

5. 使用Qt Creator进行开发

在Qt Creator中创建新项目时,选择静态编译的Qt版本,并在.pro文件中添加CONFIG += static。然后使用以下命令生成Makefile并编译:

qmake
make
04

注意事项和优化建议

  1. 交叉编译工具链:确保使用与目标平台匹配的交叉编译工具链,例如arm-linux-gnueabihf

  2. 性能优化:在编译时添加优化选项,如-O2,并针对具体硬件架构进行优化。

  3. 内存管理:嵌入式设备内存资源有限,注意避免内存泄漏,合理使用Qt的内存管理机制。

05

总结与展望

Qt凭借其跨平台特性、丰富的库支持和强大的开发工具,在嵌入式开发领域具有显著优势。通过静态编译,可以进一步提高程序的稳定性和性能。随着物联网和智能设备的快速发展,Qt在嵌入式领域的应用前景将更加广阔。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号