在龙芯平台源码安装Qt5.15
本来自带的是Qt9,但是因为想要编译某软件,要求Qt>11,龙芯的支持又比较少,所以就自行源码编译。
操作环境
依赖安装
由于是龙芯平台,虽然大多数依赖是能找到的,可能还会有一些漏网之鱼,所以就不一一列举了,按照这个文档挨个装就好了:
添加设备支持
正常来说,不做任何修改就编译是会报错的,大概是"qtbase_src_make faild
",具体我就不找了,原因就是没有对设备进行支持。
好在Qt已经提供了两款mips
的板卡支持,如下图红框下两个,所以只需要复制一份,然后改改配置就能用了。
可以看到我添加的板卡支持是:linux-mips64el-4000-g++
修改其中qmake.conf
的配置,可以参考我的修改
#
# qmake configuration for linux-mipsel-broadcom-97425-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)
load(device_config)
# 注释掉这一部分,检查-device-option后的内容,对新添加的板卡没啥用,反正也不知道新版卡会报啥错
#defineTest(qtConfSanitizeMkspec) {
# isEmpty(B_REFSW_DEBUG): \
# error("B_REFSW_DEBUG needs to be set via -device-option B_REFSW_DEBUG=(y|n)")
# isEmpty(BRCM_ROCKFORD_PATH): \
# error("BRCM_ROCKFORD_PATH needs to be set via -device-option BRCM_ROCKFORD_PATH=<path>")
# isEmpty(BRCM_APPLIBS_PATH): \
# error("BRCM_APPLIBS_PATH needs to be set via -device-option BRCM_APPLIBS_PATH=<path>")
# deviceSanityCheckCompiler()
#}
# 修改下面编译器的配置,如果是升级了gcc7,应该很容易理解下面的路径
# Modify the defaults we loaded above
CROSS_COMPILE = /opt/rh/devtoolset-7/root/usr/bin/
QMAKE_CC = /opt/rh/devtoolset-7/root/usr/bin/mips64el-redhat-linux-gcc
QMAKE_CXX = /opt/rh/devtoolset-7/root/usr/bin/mips64el-redhat-linux-g++
QMAKE_LINK = /opt/rh/devtoolset-7/root/usr/bin/mips64el-redhat-linux-g++
QMAKE_LINK_SHLIB = /opt/rh/devtoolset-7/root/usr/bin/mips64el-redhat-linux-g++
QMAKE_AR = /opt/rh/devtoolset-7/root/usr/bin/ar cqs
QMAKE_OBJCOPY = /opt/rh/devtoolset-7/root/usr/bin/objcopy
QMAKE_NM = /opt/rh/devtoolset-7/root/usr/bin/nm -P
QMAKE_STRIP = /opt/rh/devtoolset-7/root/usr/bin/strip
#TODO: Clean Qt to work with uclibc not calling itself GLIBC.
#QMAKE_CFLAGS += -D__FORCE_NOGLIBC
#QMAKE_CXXFLAGS += -D__FORCE_NOGLIBC
# 板卡名称在此定义
BRCM_PLATFORM = 3a4000
# Figure the kind of directfb build used.
BRCM_BUILD_TYPE = debug
contains(B_REFSW_DEBUG, [Nn]) {
BRCM_BUILD_TYPE = release
}
QMAKE_INCDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/interface/khronos/include
QMAKE_LIBDIR_OPENGL_ES2 = $${BRCM_ROCKFORD_PATH}/middleware/v3d/lib_$${BRCM_PLATFORM}_$${BRCM_BUILD_TYPE}
QMAKE_LIBS_OPENGL_ES2 = -lv3ddriver -lrt
QMAKE_LIBS_EGL =
QMAKE_INCDIR_POST += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3
QMAKE_LIBDIR_POST += $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3
QMAKE_RPATHLINKDIR_POST += $$QMAKE_LIBDIR_OPENGL_ES2 $${BRCM_APPLIBS_PATH}/opensource/zlib/zlib-1.2.3
# DirectFB platform hooks for this hardware
QT_CONFIG += directfb_egl egl
DIRECTFB_PLATFORM_HOOKS_SOURCES = $$PWD/qdirectfbeglhooks_bcm97425.cpp
DIRECTFB_PLATFORM_HOOKS_INCLUDEPATH = $${BRCM_ROCKFORD_PATH}/middleware/platform/directfb
DIRECTFB_PLATFORM_HOOKS_LIBS = -ldbpl
DIRECTFB_PLATFORM_HOOKS_LIBDIR = $${BRCM_ROCKFORD_PATH}/middleware/platform/directfb/lib_$${BRCM_PLATFORM}_$${BRCM_BUILD_TYPE}
QT_QPA_DEFAULT_PLATFORM = directfbegl
load(qt_config)
configure
然后就是配置生成Makefile
[root@localhost qt-5.15.2] mkdir build && cd build
[root@localhost qt-5.15.2] ../configure -v -device linux-mips64el-4000-g++ \
-device-option CROSS_COMPILE=/opt/rh/devtoolset-7/root/usr/bin/ \
-opensource -confirm-license -optimized-qmake -reduce-exports \
-release -qt-pcre -make libs
make
然后会提示使用make
之类的工具进行安装,我这里提示我使用gmake
,为了编译快一点,我运行了gmake -j 4
编译通过以后再运行gmake install
进行安装,最后会安装在/usr/local/Qt-5.15.2
在其中的bin目录执行./qmake -v
可以看到安装成功
配置环境变量
然后配置环境变量以便常用,添加如下两句到用户目录的.bashrc
中,对应路径自行修改即可
export LD_LIBRARY_PATH=/usr/local/Qt-5.12.10/lib/:$LD_LIBRARY_PATH
export PATH=/usr/local/Qt-5.12.10/bin:$PATH
然后在任何地方都可以使用了
完成
如果要尝试qtcreator的话,本机自带是:
我不太懂Qt,这个版本的关系不太清楚,不过在设置Kit的时候是可以编译的
然后随便编译一个,效果如下: