ubuntu 龙芯 qt 交叉编译
2016-12-11 16:58
176 查看
上周遇到一个难题,在龙芯上面运行qt,网上对arm的讲解时非常多的,但是龙芯mips的交叉编译却说的十分的少,现在感觉对此比较了解,所以特意写一篇博客,如果有什么不对的地方,欢迎指正
首先说下自己的环境ubuntu kylin 64
首先是龙芯的交叉编译的下载,在龙芯的开源社区里面就能够找到。里面有详细的环境配置说明。
然后时qt我们可以在官网上面下载源码
http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/5.5/5.5.1/single/
这里我们选着qt-everywhere-opensource-src-5.5.1.7z ,因为他下下来比较小嘛。。
tar -xvf qt-everywhere-opensource-src-5.5.1.7z ,你会发现解压不了,我们因为7z的压缩格式我们需要特定的解压软件
sudo apt-get install p7zip
7za x qt-everywhere-opensource-src-5.5.1.7z -r -o./
当然在安装完p7zip 后我们也可以使用图形界面中的右击提取了
cd qt-everywhere-opensource-src-5.5.1
ls
我们首先要修改 qmake.cnf
gedit qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.cnf
修改里面的内容,
这我贴下我的修改方式
#
# 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)
保存退出,回到qt-everywhere-opensource-src-5.5.1
这里我们需要简单来配置qt的编译。我们可以按需要编译自己想要的东西。
./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
注意上面的并没有安装xcb(在图形界面中显示需要用到库),和tslib(触摸屏库)
如果需要tslib,请先交叉编译tslib
xcb也是同样的
然后make -j4&&make install
3个小时左右的时间吧编译完成,
下面我们需要在qt中添加qmake
在qt的tools->options->Build & run
Qt Versions 里面add 我们刚刚编译出来的qmake
Compilers 里面add 我们的龙芯交叉编译工具g++
这里我们可以写一个简单的小程序
编译,你会发现调试界面显示
Failed to start program. Path or permissions wrong?
不能打开这个软件,因为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
是龙芯的mips,我们需要吧我们交叉编译的库,还有这个简单的qt 编译出来的可执行程序放到龙芯下面。
这里我们先说,字符界面。
//------------------
这里我们放在/usr/local/下面
配置下环境
vi /etc/profile
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
reboot
重启
./mips_qt_demo
成功了,你的测试demo运行成功。
唯一美中不足的就是,不能点击图标,现在想起来之前的tslib库了么,在./configure 里面添加 -qt-tslib 和交叉编译后的tslib库和头文件。
//-------------------------
下面时图形界面,因为有些龙芯终端买购买过来已经带了国产的操作系统。而且在字符界面有些事情变得很难办到,比如说视频播放
但是照着上面的方式编译后我们在执行程序的时候,你会发现
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Reinstalling the application may fix this problem.
提示我们缺少xcb插件,我查看plugins下面确实没有xcb 插件。
下面我们需要交叉编译我们的xcb 这个在我的另一篇博客中查看
然后就是和tslib一样在./configure 里面添加-qt-xcb,还有交叉编译后的xcb的库文件和头文件。
带图形界面中使用了。
最后说一句。
或者这里你可以做之前的某步做不到,你可以直接在qt 源代码中下载qt 4.8.6的那个可以在龙芯图形界面上面本机编译qt,但这个时间会比较的长,需要6个小时多吧。
这里说明下,本机编译的话,如果时默认设置,有些东西可能不会编译,比如显示字体的fontconfig 就不能编译进去。对字体就无法进行修改或者字体根本就是空。
可以查看我的另一篇博客,交叉编译fontconfig
首先说下自己的环境ubuntu kylin 64
首先是龙芯的交叉编译的下载,在龙芯的开源社区里面就能够找到。里面有详细的环境配置说明。
然后时qt我们可以在官网上面下载源码
http://mirrors.ustc.edu.cn/qtproject/official_releases/qt/5.5/5.5.1/single/
这里我们选着qt-everywhere-opensource-src-5.5.1.7z ,因为他下下来比较小嘛。。
tar -xvf qt-everywhere-opensource-src-5.5.1.7z ,你会发现解压不了,我们因为7z的压缩格式我们需要特定的解压软件
sudo apt-get install p7zip
7za x qt-everywhere-opensource-src-5.5.1.7z -r -o./
当然在安装完p7zip 后我们也可以使用图形界面中的右击提取了
cd qt-everywhere-opensource-src-5.5.1
ls
我们首先要修改 qmake.cnf
gedit qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/devices/linux-mipsel-broadcom-97425-g++/qmake.cnf
修改里面的内容,
这我贴下我的修改方式
#
# 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)
保存退出,回到qt-everywhere-opensource-src-5.5.1
这里我们需要简单来配置qt的编译。我们可以按需要编译自己想要的东西。
./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
注意上面的并没有安装xcb(在图形界面中显示需要用到库),和tslib(触摸屏库)
如果需要tslib,请先交叉编译tslib
xcb也是同样的
然后make -j4&&make install
3个小时左右的时间吧编译完成,
下面我们需要在qt中添加qmake
在qt的tools->options->Build & run
Qt Versions 里面add 我们刚刚编译出来的qmake
Compilers 里面add 我们的龙芯交叉编译工具g++
这里我们可以写一个简单的小程序
编译,你会发现调试界面显示
Failed to start program. Path or permissions wrong?
不能打开这个软件,因为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
是龙芯的mips,我们需要吧我们交叉编译的库,还有这个简单的qt 编译出来的可执行程序放到龙芯下面。
这里我们先说,字符界面。
//------------------
这里我们放在/usr/local/下面
配置下环境
vi /etc/profile
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
reboot
重启
./mips_qt_demo
成功了,你的测试demo运行成功。
唯一美中不足的就是,不能点击图标,现在想起来之前的tslib库了么,在./configure 里面添加 -qt-tslib 和交叉编译后的tslib库和头文件。
//-------------------------
下面时图形界面,因为有些龙芯终端买购买过来已经带了国产的操作系统。而且在字符界面有些事情变得很难办到,比如说视频播放
但是照着上面的方式编译后我们在执行程序的时候,你会发现
This application failed to start because it could not find or load the Qt platform plugin "xcb".
Reinstalling the application may fix this problem.
提示我们缺少xcb插件,我查看plugins下面确实没有xcb 插件。
下面我们需要交叉编译我们的xcb 这个在我的另一篇博客中查看
然后就是和tslib一样在./configure 里面添加-qt-xcb,还有交叉编译后的xcb的库文件和头文件。
带图形界面中使用了。
最后说一句。
或者这里你可以做之前的某步做不到,你可以直接在qt 源代码中下载qt 4.8.6的那个可以在龙芯图形界面上面本机编译qt,但这个时间会比较的长,需要6个小时多吧。
这里说明下,本机编译的话,如果时默认设置,有些东西可能不会编译,比如显示字体的fontconfig 就不能编译进去。对字体就无法进行修改或者字体根本就是空。
可以查看我的另一篇博客,交叉编译fontconfig
相关文章推荐
- 虚拟机中在Ubuntu14.04下搭建QT交叉编译环境--2014/8/14
- 搭建虚拟机下ubuntu的qt-arm交叉编译工具
- Ubuntu 16.04下Qt交叉编译开发环境搭建
- Ubuntu,TQ2440,arm-linux,Qt交叉编译环境配置
- Qt5.7.1 树莓派3B+ 2016-09-23-raspbian-jessie.img 交叉编译 ubuntu16.04
- linux-ubuntu16.04 为树莓派3B 交叉编译qt5.9 心得
- 在Ubuntu14.04中安装海思平台上交叉编译的qt4.8.7
- ubuntu下交叉编译QT程序完整流程
- window和ubuntu上的QT中文显示正常,交叉编译arm板上debian系统中文显示不正常【已解决】
- ubuntu 16.04 qt 5.5教程编译环境的搭建,ubuntu i.mx6 qt交叉编译环境搭建
- ARM40 Ubuntu交叉编译Qt4.8.7
- ubuntu qt 4.6.3 交叉编译环境搭建
- ubuntu14.04交叉编译qt4.8.6
- 图解如何将Ubuntu上的Qt程序交叉编译出可在ARM平台运行的程序(五部曲)
- Ubuntu14.04 交叉编译Qt-creator
- ubuntu16交叉编译Qt5.9
- Ubuntu树莓派交叉编译qt5.8 +mysql数据库驱动文件.so
- Ubuntu16.04下Qt交叉编译开发环境搭建
- Ubuntu16.04下Qt交叉编译开发环境搭建
- ubuntu下qt4.7.3交叉编译环境的搭…