rk3588编译Qt搞了我大半年了,一直困惑特别感谢:qq1033878279的网友远程帮我编译演示了一遍。
一、vmware 安装基础工具
sudo apt install -y build-essential net-tools openssh-server vim openssl libssl-dev二、vmware 下载 cmake和Qt源码
下载cmake :
wget https://cmake.org/files/v3.31/cmake-3.31.3.tar.gz下载Qt5.15.15源码:
wget https://download.qt.io/official_releases/qt/5.15/5.15.15/single/qt-everywhere-opensource-src-5.15.15.tar.xz下载交叉编译器:
git clone https://github.com/LubanCat/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.git三、 vmware 安装 cmake
./configure --prefix=/opt/cmake make make install四、查看 rk3588 arm架构及系统版本
root@ztl:~# uname -a Linux ztl 5.10.198 #209 SMP Wed Nov 27 09:28:31 CST 2024 aarch64 aarch64 aarch64 GNU/Linux查看aarch64,64位的。查看系统:
root@ztl:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.3 LTS Release: 20.04 Codename: focal得知rk3588的板子是ubuntu20.04,故vmware虚拟机也得安装ubuntu20.04
五、查看 rk3588 g++版本
root@ztl:~# g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/9/lto-wrapper Target: aarch64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.2' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu Thread model: posix gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2)查看版本为:
Target:aarch64-linux-gnu
六、 vmware 查看交叉编译器g++
查看 aarch64-none-linux-gnu-g++,得知target为aarch64-none-linux-gnu-
七、修改qmake.conf
根据路径 qtbase/mkspecs/linux-aarch64-gnu-g++,修改qmake.conf,将
# # qmake configuration for building with aarch64-linux-gnu-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 = aarch64-linux-gnu-gcc QMAKE_CXX = aarch64-linux-gnu-g++ QMAKE_LINK = aarch64-linux-gnu-g++ QMAKE_LINK_SHLIB = aarch64-linux-gnu-g++ # modifications to linux.conf QMAKE_AR = aarch64-linux-gnu-ar cqs QMAKE_OBJCOPY = aarch64-linux-gnu-objcopy QMAKE_NM = aarch64-linux-gnu-nm -P QMAKE_STRIP = aarch64-linux-gnu-strip load(qt_config)修改为:
# # qmake configuration for building with aarch64-linux-gnu-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 = aarch64-none-linux-gnu-gcc QMAKE_CXX = aarch64-none-linux-gnu-g++ QMAKE_LINK = aarch64-none-linux-gnu-g++ QMAKE_LINK_SHLIB = aarch64-none-linux-gnu-g++ # modifications to linux.conf QMAKE_AR = aarch64-none-linux-gnu-ar cqs QMAKE_OBJCOPY = aarch64-none-linux-gnu-objcopy QMAKE_NM = aarch64-none-linux-gnu-nm -P QMAKE_STRIP = aarch64-none-linux-gnu-strip load(qt_config)九、configure
在qt-everywhere-src-5.15.15根目录下打开终端,执行:
export ARCH=aarch64 export CROSS_COMPILE=aarch64-none-linux-gnu- export PATH=$PATH:/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin以上PATH为交叉编译器路径。然后继续执行:
./configure \ -xplatform linux-aarch64-gnu-g++ \ -prefix /opt/Qt5.15.15 \ -release \ -opensource \ -skip qtwayland \ -skip qtlocation \ -skip qtscript \ -make libs \ -optimized-qmake \ -no-opengl \ -no-sse2 \ -no-openssl \ -no-cups \ -no-glib \ -no-pkg-config \ -no-separate-debug-info \ -pch \ -shared \ -qt-libjpeg \ -qt-zlib \ -qt-libpng其中 -xplatformlinux-aarch64-gnu-g++这里需要注意。
输入y回车后继续编译 。
十、执行编译
make make install最好不要编译make -j16,否则可能编译失败。
十一、编译Qt 界面程序
在windows创建一个简单的界面程序,不做任何修改,直接拷贝到vmware虚拟机中,执行:
/opt/Qt5.15.15/bin/qmake untitled.pro然后
make拷贝到rk3588的板子上,执行
chmod 777 ./untitled ./untitled如图:
如果遇到如下:
zr@ubuntu:/opt/untitled$ /opt/Qt5.15.15/bin/qmake ./untitled.pro Project ERROR: Cannot run target compiler 'aarch64-none-linux-gnu-g++'. Output: =================== =================== Maybe you forgot to setup the environment?再执行下第九节的:
export ARCH=aarch64 export CROSS_COMPILE=aarch64-none-linux-gnu- export PATH=$PATH:/opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin