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组件实现的播放器播放视频卡顿的解决办法]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Command line: -prefix /home/liuyh/workspace/qt5.14.2-arm -opensource -confirm-license -release -strip -shared -xplatform linux-arm-gnueabi-g++ -optimized-qmake -c++std c++11 --rpath=no -pch -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtlocation -skip qtmacextras -skip qtnetworkauth -skip qtpurchasing -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtspeech -skip qtsvg -skip qttools -skip qttranslations -skip qtwayland -skip qtwebengine -skip qtwebview -skip qtwinextras -skip qtx11extras -skip qtxmlpatterns -make libs -make examples -nomake tools -nomake tests -gui -widgets -dbus-runtime --glib=no --iconv=no --pcre=qt --zlib=qt -no-openssl --freetype=qt --harfbuzz=qt -no-opengl -linuxfb --xcb=no -tslib --libpng=qt --libjpeg=qt --sqlite=qt -plugin-sql-sqlite -I/opt/tslib/include -L/opt/tslib/lib -recheck-all executing config test machineTuple + arm-linux-gnueabi-g++ -dumpmachine > sh: 1: arm-linux-gnueabi-g++: not found test config.qtbase.tests.machineTuple FAILED executing config test verifyspec + cd /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/config.tests/verifyspec && /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" 'QMAKE_LIBDIR += /opt/tslib/lib' 'INCLUDEPATH += /opt/tslib/include' -early "CONFIG += cross_compile" /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/config.tests/verifyspec + cd /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/config.tests/verifyspec && MAKEFLAGS= /usr/bin/make clean && MAKEFLAGS= /usr/bin/make > rm -f verifyspec.o > rm -f *~ core *.core > arm-linux-gnueabi-g++ -c -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard -pipe -O2 -w -fPIC -I/home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/config.tests/verifyspec -I. -I/opt/tslib/include -I/home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/mkspecs/linux-arm-gnueabi-g++ -o verifyspec.o /home/liuyh/workspace/QT5.14.2/qt-everywhere-src-5.14.2/qtbase/config.tests/verifyspec/verifyspec.cpp > make:arm-linux-gnueabi-g++:命令未找到 > make: *** [Makefile:172:verifyspec.o] 错误 127
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值