Qt5.14.2移植到SOM-RK3399开发板上的问题解决办法
1. 概述
由于FRIENDLYELEC系统中使用的Qt的平台抽象层QT_QPA_PLATFORM是xcb,而我移植的Qt5.14.2在配置时没有配置xcb,所以在Host编译的可执行程序在目标机SOM-RK339上运行时使用的都是Qt5.14.2的库,窗口总是创建失败;因此重新去配置Qt5.14.2使能xcb,但是它依赖其他库,我尝试去编译其他依赖库,发现依赖太多其他库,尝试了一天多时间,以失败告终,所以就放弃了。
解决办法是:移植Qt5.9.5,这个版本和FRIENDLYELEC系统上自带的Qt版本移植。
2. 配置Qt5.9.5
2.1 mkspec配置文件
bruce@bruce:~/Code/qtsourcecode/qt-everywhere-opensource-src-5.9.5/qtbase/mkspecs/linux-arm-som-rk3399$ cat 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)
QMAKE_INCDIR_POST += /usr/aarch64-linux-gnu/include
QMAKE_LIBDIR_POST += /usr/aarch64-linux-gnu/lib
QT_QPA_DEFAULT_PLATFORM = xcb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -mcpu=cortex-a72
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -mcpu=cortex-a72
QMAKE_CXXFLAGS += -std=c++17
QMAKE_LIBS += -lrt
# 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)
2.2 配置脚本
#!/bin/bash
../configure \
-xplatform linux-arm-som-rk3399 \
-prefix /home/bruce/Code/qtsourcecode/qt-everywhere-opensource-src-5.9.5/shadow_build/qt5.9.5_install \
-release -opensource -confirm-license \
-make libs \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-qpa xcb\
-no-xcb \
-no-separate-debug-info \
-c++std c++11 \
-nomake tests \
-nomake examples \
-strip \
-optimized-tools \
-make tools \
-recheck-all
注意: 加入-make tools配置选项用来生成qhelpgenerator工具,如果不加入的话会不生成,它用来生成Qt的帮助文档。如果不加在执行make docs时会失败。
2.3 执行make docs时出现的错误
找不到/lib/ld-linux-aarch64.so.1的错误
2.3.1 查找"ld-linux-aarch64.so.1"
ruce@bruce:~$ sudo find / -name "ld-linux-aarch64.so.1"
[sudo] password for bruce:
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1
/opt/FriendlyARM/toolchain/6.4-aarch64/aarch64-cortexa53-linux-gnu/sysroot/lib/ld-linux-aarch64.so.1
/opt/FriendlyARM/toolchain/gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu/aarch64-linux-gnu/libc/lib/ld-linux-aarch64.so.1
/opt/FriendlyARM/toolchain/gcc-linaro-aarch64-linux-gnu-4.8-2013.10_linux/aarch64-linux-gnu/libc/lib/ld-linux-aarch64.so.1
/home/bruce/Softwares/gcc-linaro-aarch64-linux-gnu-4.8-2013.10_linux/aarch64-linux-gnu/libc/lib/ld-linux-aarch64.so.1
- 将/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1拷贝到/lib
bruce@bruce:~$ sudo cp /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib
- 重新执行make docs执行成功
2.4 执行make install_docs安装Qt手册
bruce@bruce:~/Code/qtsourcecode/qt-everywhere-opensource-src-5.9.5/shadow_build$ make install_docs
3. 打开QtCreator配置环境(仍然用安装Qt5.14.2时的QCreator)
3.1 配置使用的Qt版本(Qt5.9.5)
3.2 配置build kits
3.3 配置Qt5.9.5的API手册
- 选择Tools—Options打开选项手册
- 点击Add按钮添加Qt的API手册:(*.qch文件)
- 添加后(*.qch文件)
3.4 测试API手册
搜索QWidget,成功搜索到
4. 将编译的Qt5.9.5拷贝到SOM-RK3399配置环境
pi@SOM-RK3399v2:/$ cat /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
#QTDIR=/usr/local/Trolltech/Qt-5.10.0-rk64one
#QT_QPA_PLATFORM=xcb
#QT_QPA_EGLFS_HIDECURSOR=0
#QTWEBENGINE_DISABLE_SANDBOX=1
#QT_QPA_FONTDIR=/usr/share/fonts/truetype/ubuntu-font-family
#QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/Trolltech/Qt-5.10.0-rk64one/plugins/
export QTDIR=/opt/qt5.9.5_install
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
#export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/Trolltech/Qt-5.10.0-rk64one/plugins/
export QT_QPA_PLATFORM=xcb
export QT_QPA_FONTDIR=/usr/share/fonts/truetype/ubuntu-font-family
[上一页 Qt5.14.2移植到SOM-RK3399开发板] [下一篇 QT的QMediaPlayer组件实现的播放器播放视频卡顿的解决办法]