QT5.5.1移植到cubieborad教程

一、环境说明

-PC系统:ubuntu 14.04 x64

编译器:arm-none-linux-gnueabi-gcc4.8.3

开发平台:Cubieboard2-DualCard

开发板系统:cubieez-cb2-bootcard-v2.2

 

二、下载源码

QT源码官网下载:http://download.qt.io/official_releases/qt/5.5/5.5.1/single/

交叉编译器下载:http://pan.baidu.com/s/1nt46q2t

expat源码下载: http://sourceforge.net/projects/expat/files/expat/

dbus源码的下载:http://dbus.freedesktop.org/releases/dbus/

在移植QT同时,需要移植dbus库,而在移植dbus库前,需要安装expat,我使用的是expat-2.1.0dbus-1.2.30

 

三、准备工作:

1. 配置交叉编译器

(1). 解压

tar -jxvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

对于解压后的文件夹,我将其改名为arm,然后使用命令cp -r arm/ /opt/将其移动到opt/目录下面。

(2).配置路径

使用命令vim /etc/profile

打开profile文件(如果没有vim的用vi也行,或者sudo apt-get install vim安装一个),在后面添加

export PATH=$PATH:/opt/arm/bin/

然后保存退出。使用命令

source /etc/profile

重启profile文件。在终端输入arm然后按Tab,出现arm-none-linux-gnueabi-gcc-…等一些列提示则代表交叉编译器配置成功。

 

2.安装expat

(1). 解压

tar -zxvf expat-2.1.0.tar.gz

(2).配置

cd命令进入文件夹,输入:CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux--prefix=/opt/expat-2.1.0

其中prefix参数设置的是最后make install的安装路径,在这里即/opt/expat-2.1.0

假如出现错误:

checkingwhether the C compiler works... no

configure:error: in `/home/lipei/Desktop/expat-2.1.0':

configure:error: C compiler cannot create executables

See`config.log' for more details

可能是少了lib32z1

执行sudo apt-get install lib32z1再重新尝试。

(3).成功后执行make

(4).执行make install

 

3.安装dubs

(1). 解压

tar -zxvf dbus-1.2.30.tar.gz

(2).配置

cd命令进入文件夹,输入:CC=arm-none-linux-gnueabi-gcc ./configureCFLAGS=-I/opt/expat-2.1.0/include LDFLAGS=-L/opt/expat-2.1.0/lib--prefix=/opt/dbus-1.2.30 --host=arm-linux --enable-abstract-sockets

(3).执行make

(4).执行make install

(5)生成machine-id

执行命令dbus-uuidgen >/opt/EmbedRigol/install-dev/dbus-1.2.30/var/lib/dbus/machine-id

如果没有相应目录请按照错误提示将路径建立完整。

四、交叉编译QT

1.解压下载的源码

tar -zxvf qt-everywhere-opensource-src-5.5.1.tar.gz


2.修改qmake.cof

进入qtbase/mkspecs/linux-arm-gnueabi-g++/ 目录,并打开 qmake.conf 文件,修改成如下:

#

#qmake configuration for building with arm-linux-gnueabi-g++

#

 

MAKEFILE_GENERATOR      = UNIX

CONFIG                 += incremental

QMAKE_INCREMENTAL_STYLE = sublib

 

QT_QPA_DEFAULT_PLATFORM = linuxfb

QMAKE_CFLAGS_RELEASE   += -O2 -march=armv7-a

QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a

 

QMAKE_INCDIR           += /opt/dbus-1.2.30/include/dbus-1.0

QMAKE_INCDIR           += /opt/dbus-1.2.30/lib/dbus-1.0/include

QMAKE_LIBDIR            += /opt/dbus-1.2.30/lib

 

include(../common/linux.conf)

include(../common/gcc-base-unix.conf)

include(../common/g++-unix.conf)

 

 

#modifications to g++.conf

QMAKE_CC                = arm-none-linux-gnueabi-gcc

QMAKE_CXX               = arm-none-linux-gnueabi-g++

QMAKE_LINK              = arm-none-linux-gnueabi-g++

QMAKE_LINK_SHLIB        = arm-none-linux-gnueabi-g++

 

#modifications to linux.conf

QMAKE_AR                = arm-none-linux-gnueabi-ar cqs

QMAKE_OBJCOPY           = arm-none-linux-gnueabi-objcopy

QMAKE_NM                = arm-none-linux-gnueabi-nm -P

QMAKE_STRIP             = arm-none-linux-gnueabi-strip

load(qt_config)



3.修改解压目录下的qt.pro文件

在文件中找到两行:

addModule(qt3d,qtdeclarative qtimageformats)

addModule(qtcanvas3d,qtdeclarative)

在前面添加#注释掉:

#addModule(qt3d,qtdeclarative qtimageformats)

#addModule(qtcanvas3d,qtdeclarative)

4. 配置编译参数

输入:./configure -release-opensource -xplatform linux-arm-gnueabi-g++ -prefix /opt/qt-5.5.1 -confirm-license -no-iconv -no-opengl -no-c++11 -dbus

 

-xplatform指定平台,也就是qmake 配置文件的文件夹名 linux-arm-gnueabi-g++

-prefix 后面跟编译后执行 make install 的安装路径

-confirm-license 相当于同意一个协议

-no-opengl 为了不编译 3d 参数,这里增加 ” -no-opengl ” 参数

-no-c++11 表示不用C++11的特性

 

如果提示:

Buildparts ............ libs examples

  Mode ................... release

  Using sanitizer(s)...... none

  Using C++11 ............ no

  Using gold linker....... no

  Using new DTAGS ........ yes

  Using PCH .............. yes

  Target compiler supports:

Neon ................. no

……(此处省略中间部分)

  SQL drivers:

    DB2 .................. no

    InterBase ............ no

    MySQL ................ no

    OCI .................. no

    ODBC ................. no

    PostgreSQL ........... no

    SQLite 2 ............. no

    SQLite ............... yes (plugin,using bundled copy)

    TDS .................. no

  tslib .................. no

  udev ................... no

  xkbcommon-x11........... no

  xkbcommon-evdev......... no

  zlib ................... yes (bundledcopy)

则配置成功。

5.执行make

编译,等待大概2个小时

6.执行make install

最终在/opt目录下会出现qt-5.5.1文件夹。

 

五、移植到开发板

1. 打包拷贝

(1)

tar -jcvf qt-5.5.1.tar.bz2 qt-5.5.1

打包整个文件夹,然后复制到cb2文件系统的/opt目录下。使用命令

tar -jxvf qt-5.5.1.tar.bz2

解压。

(2)打包dbus-1.2.30文件夹,拷贝到cb2/opt上解压,操作同(1)。

2.配置环境变量

vim/etc/profile打开开发板的/etc目录下的profile文件(没有vimvi也行),在后面添加:

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/qt-5.5.1/bin

export PATH

#set hostname

HOSTNAME='/bin/hostname'

export HOSTNAME

#Set PS1

PS1='[\u@\h\W]\$'

export PS1

#qt path

export QTDIR=/opt/qt-5.5.1

export LD_LIBRARY_PATH=/lib:$QTDIR/lib:$LD_LIBRARY_PATH

export QT_QWS_FONTDIR=$QTDIR/lib/fonts

export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins

export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0

export QT_QPA_GENERIC_PLUGINS=evdevtouch:/dev/input/event1

export QML2_IMPORT_PATH=$QTDIR/qml

保存后执行命令source /etc/profile重启文件。

3.拷贝库文件

(1)PC上交叉编译器/opt /arm/arm-none-linux-gnueabi/libc 目录所有 .so 文件拷贝到开发板 lib 目录。

(2)PC/opt/arm /arm-none-linux-gnueabi-gcc/libc/usr/lib目录下的libstdc++.so.6libstdc++.so.6.19拷贝到开发板的lib目录。

(3)把开发板上/opt/dbus-1.2.30/lib目录下的ibdbus-1.soibdbus-1.so.3ibdbus-1.so.3.4.3拷贝到开发板的lib目录

4.cb2上执行一下QT自带的案例程序

进入/opt/qt-5.5.1/examples/touch/pinzoom/pinchzoom./pinchzoom执行程序。程序能运行则移植成功。由于之前qmake.conf中设定了QT_QPA_DEFAULT_PLATFORM =linuxfb所以程序是没有标题栏的。

 

参考自:http://blog.csdn.net/imhml1987/article/details/49666359

猜你喜欢

转载自blog.csdn.net/u014695839/article/details/50805102