ubuntu 龙芯 qt 交叉编译

前端之家收集整理的这篇文章主要介绍了ubuntu 龙芯 qt 交叉编译前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

上周遇到一个难题,在龙芯上面运行qt,网上对arm的讲解时非常多的,但是龙芯mips的交叉编译却说的十分的少,现在感觉对此比较了解,所以特意写一篇博客,如果有什么不对的地方,欢迎指正@H_502_1@

首先说下自己的环境ubuntu kylin 64
@H_502_1@

首先是龙芯的交叉编译的下载,在龙芯的开源社区里面就能够找到。里面有详细的环境配置说明。@H_502_1@

然后时qt我们可以在官网上面下载源码
@H_502_1@

http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/5.5/5.5.1/single/
@H_502_1@

这里我们选着qt-everywhere-opensource-src-5.5.1.7z ,因为他下下来比较小嘛。。@H_502_1@

tar -xvf qt-everywhere-opensource-src-5.5.1.7z ,你会发现解压不了,我们因为7z的压缩格式我们需要特定的解压软件@H_502_1@

sudo apt-get install p7zip@H_502_1@

7za x qt-everywhere-opensource-src-5.5.1.7z -r -o./@H_502_1@

当然在安装完p7zip 后我们也可以使用图形界面中的右击提取了@H_502_1@

cd qt-everywhere-opensource-src-5.5.1@H_502_1@

ls@H_502_1@

我们首先要修改 qmake.cnf@H_502_1@

gedit qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.cnf@H_502_1@

修改里面的内容,@H_502_1@

这我贴下我的修改方式@H_502_1@

#
# 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)

# Modify the defaults we loaded above
CROSS_COMPILE = mipsel-redhat-linux-
QMAKE_CC = $${CROSS_COMPILE}gcc
QMAKE_CXX = $${CROSS_COMPILE}g++
QMAKE_LINK = $${QMAKE_CXX}
QMAKE_LINK_SHLIB = $${QMAKE_CXX}

QMAKE_AR = $${CROSS_COMPILE}ar cqs
QMAKE_OBJCOPY = $${CROSS_COMPILE}objcopy
QMAKE_NM = $${CROSS_COMPILE}nm -P
QMAKE_STRIP = $${CROSS_COMPILE}strip

QMAKE_LIBS += -lrt

load(qt_config)@H_502_1@

保存退出,回到qt-everywhere-opensource-src-5.5.1@H_502_1@

这里我们需要简单来配置qt的编译。我们可以按需要编译自己想要的东西。@H_502_1@

./configure \
-prefix /home/musx/mips_qt5 \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform devices/linux-mipsel-broadcom-97425-g++ \
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-nis \
-no-cups \
-no-glib \
-no-dbus \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake tests -no-iconv
@H_502_1@

注意上面的并没有安装xcb(在图形界面中显示需要用到库),和tslib(触摸屏库)@H_502_1@

如果需要tslib,请先交叉编译tslib@H_502_1@

xcb也是同样的@H_502_1@

然后make -j4&&make install@H_502_1@

3个小时左右的时间吧编译完成,@H_502_1@

下面我们需要在qt中添加qmake@H_502_1@

在qt的tools->options->Build & run@H_502_1@

Qt Versions 里面add 我们刚刚编译出来的qmake@H_502_1@

Compilers 里面add 我们的龙芯交叉编译工具g++
@H_502_1@

这里我们可以写一个简单的小程序@H_502_1@

编译,你会发现调试界面显示@H_502_1@

Failed to start program. Path or permissions wrong?@H_502_1@ 不能打开这个软件,因为cpu不一样,肯定打不开这个软件,在命令行里面用file 查看文件

mips_qt5: ELF 32-bit LSB executable,MIPS,MIPS64 rel2 version 1 (SYSV),dynamically linked (uses shared libs),for GNU/Linux 2.4.0,BuildID[sha1]=3cdd6387c14f3ec68c2270664458f933f9bb52b5,not stripped@H_502_1@

是龙芯的mips,我们需要吧我们交叉编译的库,还有这个简单的qt 编译出来的可执行程序放到龙芯下面。@H_502_1@

这里我们先说,字符界面。@H_502_1@

//------------------
@H_502_1@

这里我们放在/usr/local/下面@H_502_1@

配置下环境@H_502_1@

vi /etc/profile@H_502_1@

export QT_ROOT=/usr/local/qt5.5.1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:$QT_ROOT/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event0
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin
export QML2_IMPORT_PATH=$QT_ROOT/qml@H_502_1@

reboot
@H_502_1@

重启@H_502_1@

./mips_qt_demo@H_502_1@

成功了,你的测试demo运行成功。@H_502_1@

唯一美中不足的就是,不能点击图标,现在想起来之前的tslib库了么,在./configure 里面添加 -qt-tslib 和交叉编译后的tslib库和头文件。@H_502_1@

//-------------------------@H_502_1@

下面时图形界面,因为有些龙芯终端买购买过来已经带了国产的操作系统。而且在字符界面有些事情变得很难办到,比如说视频播放@H_502_1@

但是照着上面的方式编译后我们在执行程序的时候,你会发现@H_502_1@

This application Failed to start because it could not find or load the Qt platform plugin "xcb".

Reinstalling the application may fix this problem.@H_502_1@

提示我们缺少xcb插件,我查看plugins下面确实没有xcb 插件
@H_502_1@

下面我们需要交叉编译我们的xcb 这个在我的另一篇博客中查看@H_502_1@

然后就是和tslib一样在./configure 里面添加-qt-xcb,还有交叉编译后的xcb的库文件和头文件。@H_502_1@

带图形界面中使用了。@H_502_1@


@H_502_1@

最后说一句。
@H_502_1@

或者这里你可以做之前的某步做不到,你可以直接在qt 源代码中下载qt 4.8.6的那个可以在龙芯图形界面上面本机编译qt,但这个时间会比较的长,需要6个小时多吧。@H_502_1@

这里说明下,本机编译的话,如果时默认设置,有些东西可能不会编译,比如显示字体的fontconfig 就不能编译进去。对字体就无法进行修改或者字体根本就是空。@H_502_1@

可以查看我的另一篇博客,交叉编译fontconfig @H_502_1@ 原文链接:https://www.f2er.com/ubuntu/355509.html

猜你在找的Ubuntu相关文章