编译移植龙芯2K1000平台下的qt-5.13

简介: 本文记录对龙芯2K进行qt5.13.1版本的移植。本文中对于tslib的安装不做讲解,使用了QT4进行核心板开发的童鞋一般情况下,应该已经安装好了tslib了,直接使用就行。

编译移植龙芯2K1000平台下的qt-5.13


本文记录对龙芯2K进行qt5.13.1版本的移植。

本文中对于tslib的安装不做讲解,使用了QT4进行核心板开发的童鞋一般情况下,应该已经安装好了tslib了,直接使用就行。

我所用到的编译环境如下:


交叉编译链工具:glibc-gcc-4.9.x-mips32

QT源码:qt-everywhere-opensource-src-5.13.1.tar.xz


为了更直观,特别说一下QT4和QT5在编译中的主要区别,以QT-4.8.6和QT-5.7.1的源码为例:


1、将源码包解压缩以后,最直观的区别是,存放交叉编译用的qmake文件的,mkspecs文件夹,在QT4中是放置于根目录下,而在QT5当中,则是存放在根目录的qtbase文件夹下。

2、在mkspecs的目录下,QT4中有linux-mips-g++文件夹,存放qmake文件,在QT5中没有这个文件夹。


qmake是一个描述构建过程的文件,将指定编译过程中所使用的编译工具。因此,在QT5中也必然需要这个文件。

下面是正文内容。


一、创建Linux-mips-g++文件夹

#tar -xvf qt-everywhere-opensource-src-5.13.1.tar.xz
#cd qt-everywhere-opensource-src-5.13.1
#cd qtbase/mkspecs
#cp -rf linux-arm-gnueabi-g++/ linux-mips-g++  
//用目录下原有的linux-arm-gnueabi-g++文件夹打个样,复制并修改文件夹名为linux-mips-g++在里面直接修改,顺便也将qplatformdefs.h复制了过来

下面修改qmake的内容。只列举重点内容

#
# qmake configuration for building with arm-linux-gnueabi-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                = mips64el-linux-gcc
QMAKE_CXX               = mips64el-linux-g++
QMAKE_LINK              = mips64el-linux-g++
QMAKE_LINK_SHLIB        = mips64el-linux-g++
# modifications to linux.conf
QMAKE_AR                = mips64el-linux-ar cqs
QMAKE_OBJCOPY           = mips64el-linux-objcopy
QMAKE_NM                = mips64el-linux-nm -P
QMAKE_STRIP             = mips64el-linux-strip
load(qt_config)

二、创建配置文件

接下去就是一个套路了,configure,make,make install三步走。

回到该安装包的根目录下。这时候根目录下有一个configure文件,需要进行配置,生成Makefile。我的习惯是生成一个脚本文件进行配置。


  • #touch autoconfigure.sh

#gedit autoconfigure.sh

在脚本文件中添加如下内容:

#!/bin/sh
./configure \
-v \
-prefix /opt/qt-5.7.1-mipsel-tslib \
-confirm-license \
-opensource \
-make libs \
-xplatform linux-mips-g++ \
-optimized-qmake \
-pch \
-no-sse2 \
-no-sse3 \
-no-ssse3 \
-no-sse4.1 \
-no-sse4.2 \
-pkg-config \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-skip qt3d \
-skip qtcanvas3d \
-skip qtpurchasing \
-skip qtvirtualkeyboard \
-alsa \
-no-opengl \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake tests -no-iconv  \
-tslib \
-I/opt/tslib-mipsel/include \
-L/opt/tslib-mipsel/lib
exit


执行./autoconfigure.sh,遇到错误:


  • bash: ./configure: /bin/sh^M: bad interpreter: No such file or

directory

这是因为configure编码问题,进入configure:

vi configure
: set ff=unix
:wq


继续执行./autoconfigure.sh:


./configure: 49: exec: /home/ww/qt/qt-everywhere-src-5.13.0/qtbase/configure: not found
vi qtbase/configure
: set ff=unix
:wq


  • 遇到错误:


ERROR: Feature ‘pkg-config’ was enabled, but the pre-condition

‘tests.pkg-config’ failed


缺少依赖库,安装:sudo apt-get install libclang-dev

安装后继续报错:


Note: Also available for Linux: linux-clang linux-icc
Note: -optimized-tools is not useful in -release mode.
Note: No wayland-egl support detected. Cross-toolkit compatibility disabled.
WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation.
Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation.
On Linux systems, you may be able to install libclang by installing the libclang-dev or libclang-devel package, depending on your distribution.
On macOS, you can use Homebrew's llvm package.
On Windows, you must set LLVM_INSTALL_DIR to the installation path.
WARNING: gperf is required to build QtWebEngine.
WARNING: bison is required to build QtWebEngine.
WARNING: flex is required to build QtWebEngine.
ERROR: Feature 'pkg-config' was enabled, but the pre-condition 'tests.pkg-config' failed.
ERROR: Feature 'alsa' was enabled, but the pre-condition 'config.unix && !config.qnx && libs.alsa' failed.


配置是个很繁琐的过程,配置文件选择有问题,会出现各种报错,焦头烂额,因此,最好能将相关配置项都有一个较为直观的了解,不然会一头雾水。如果你不会配置,就尽量使用我的上述配置,至少能保证能用。

然后就是三步走,运行脚本文件,make,make install。


#./autoconfigure.sh
#make -j4
#make install


每个人的系统环境有些区别,make中可能碰到各种可能的情况,请不要放弃,慢慢磨,总能成功的。


三、龙芯1B配置环境变量

具体怎么将lib和plugin文件放入龙芯1B核心板,我就不说了,重点看环境变量的配置。需要将主机上的 /opt/qt-5.7.1-mipsel-tslib 目录中的lib和plugins文件夹复制到核心板上。


#vi /etc/profile


修改如下内容:


export QT_DEBUG_PLUGINS=1  //将可执行程序启动过程中的内容打印出来,方便排查故障。
export QTDIR_QT5=/mnt/mmc_sd/qt-5.7.1-libs  //指向你刚复制进去的文件目录。
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR_QT5/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib
export QT_QPA_FB_TSLIB=1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib:$QTDIR_QT5/lib
export TSLIB_CONSOLEDEICE=none


其余部分与 QT4 环境下没区别。


然后就是运行你的程序的时候,不需要加-qws,如下:


#./test


有时候运行的时候,会有Illegal instruction (非法指令)的报错,这时候多试着运行几遍可能就可以了。

关于为什么要进行上述修改,包括在核心板环境变量中,取消了QWS的相关配置,添加了QPA的相关配置。


Qt5与Qt4对比有很大的改变,其最大的特性在于模块化,并且很明显的是不再见到Qt4用到的qws,Qt5新增了QPA系统,基于QPA使得Qt5移植到一个新平台非常简单而又具有极强的底层扩展能力;同时,C++11 也获得全面支持,使用 C++11 新特性更为方便。


另外,这时候运行的界面会发现没有边框,用linuxfb方式的运行的QT是没有窗体边框的,这是qt5的一个特点,似乎是其为了更好的转移到手机等移动终端。


在配置环境变量的过程中,有人会发现我的一个路径中有mmc_sd这个目录,这是我将QT5的库文件等放到了外置的tf卡下,原因很简单,自带的存储不够用了。在使用tf卡之前,需要先将tf卡格式化为ext4,不然在进行一些带链接的复制操作或者别的操作的时候,会报错。

挂载的命令如下:


#mount -t ext4 /dev/mmcblk0p1 /mnt/mmc_sd/             
//注意,mmcblk0p1,b和k之间是L的小写,最后那个是阿拉伯数字1。


可以将这句话写入 /etc/init.d/rcS 中,这样实现每次开机自动挂载。


相关文章
|
6月前
|
编译器 C语言 Windows
cryptopp使用Qt mingw编译,以及海思平台交叉编译
cryptopp使用Qt mingw编译,以及海思平台交叉编译
172 0
|
6月前
|
编译器 Linux C语言
QT编译安装QtMqtt子模块,WIN平台
QT编译安装QtMqtt子模块,WIN平台
148 0
|
2月前
|
C++
VS2019编译VTK-9.1.0+Qt5.15.2
本文介绍了在VS2019和Qt 5.15.2环境下编译VTK 9.1.0的过程,包括成功编译无警告和错误的截图、修改的pro文件内容,以及在QML中加入VTK的失败尝试和参考链接。
|
2月前
|
C语言 Android开发 C++
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
|
2月前
|
C++
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
本文介绍了如何编译整合VTK 9.2、DICOM 0.8、DCMTK 3.6.7和Qt 6.2的步骤,包括安装Qt、CMake配置以及确认相关路径和版本设置。
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
|
2月前
|
Unix 网络虚拟化 C++
VS2022+Qt5.14.2成功编译MITK2022.10
使用VS2022和Qt5.14.2成功编译MITK2022.10的过程,包括编译结果的截图、遇到的编译问题的解决方法、两个重要的注意事项(patch文件格式的修改和ITK-gitclone-lastrun文件的存在),以及参考链接。文中详细描述了如何解决编译过程中遇到的错误C2220和警告C4819,以及如何修改文件编码和尾行格式。
129 1
VS2022+Qt5.14.2成功编译MITK2022.10
|
2月前
编译QCefView+VS2019+QT5.15.2
本文介绍了如何编译QCefView项目,并在VS2019和Qt 5.15.2环境下集成,包括编译结果、要点、cmake部署Qt的方法和相关参考链接。
120 1
编译QCefView+VS2019+QT5.15.2
|
2月前
|
人工智能
三战VS2019编译VTK7.1+Qt5.15.2
本文记录了作者在VS2019环境下编译VTK 7.1与Qt 5.15.2的历程,包括正确配置方法、遇到的编译错误以及解决过程。
|
2月前
|
人工智能 C++
初步编译QT5.15.2+VS2019+VTK8.2.0
本文介绍了在VS2019中编译QT 5.15.2和VTK 8.2.0的过程,包括编译结果、cmake库编译配置和cmake应用配置脚本,以及推荐的参考链接。
117 4
|
2月前
|
计算机视觉
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
这篇文章记录了使用VS2019编译Qt6.2.4、DCMTK3.6.7、VTK9.2.2、ITK5.3和OpenCV4.6.0的过程,包括下载和编译步骤,并提供了遇到编译错误时的解决方案和参考链接。
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录

推荐镜像

更多