鲁班猫板卡上的Qt静态编译技巧
鲁班猫板卡上的Qt静态编译技巧
鲁班猫板卡简介
鲁班猫板卡是野火科技基于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)。
Qt静态编译的必要性
在嵌入式设备上进行Qt静态编译具有以下优势:
减少依赖:静态编译后的程序不依赖于外部动态链接库,便于在资源受限的嵌入式环境中运行。
提高性能:静态编译可以针对特定硬件进行优化,提高程序执行效率。
简化部署:生成的可执行文件可以直接运行,无需担心库文件的兼容性问题。
静态编译的具体步骤
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
注意事项和优化建议
交叉编译工具链:确保使用与目标平台匹配的交叉编译工具链,例如
arm-linux-gnueabihf
。性能优化:在编译时添加优化选项,如
-O2
,并针对具体硬件架构进行优化。内存管理:嵌入式设备内存资源有限,注意避免内存泄漏,合理使用Qt的内存管理机制。
总结与展望
Qt凭借其跨平台特性、丰富的库支持和强大的开发工具,在嵌入式开发领域具有显著优势。通过静态编译,可以进一步提高程序的稳定性和性能。随着物联网和智能设备的快速发展,Qt在嵌入式领域的应用前景将更加广阔。