qt5版本以后源码编译的方法和以前有所不同,在此记录移植过程。PC机上需要装的是qtcreator,集成环境方便在PC机上开发,开发板上只需移植编译完成的库。
1.下载pc机上的集成环境安装包,本机下载的为qt-opensource-linux-x86-5.3.1.run,下载后在linux上直接运行,进入图形安装界面进行安装。
2.qt移植,编译交叉开发环境
(1).交叉编译器配置(略)
(2).安装插件
xcb:sudo apt-get install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-xfixes0-dev libxrender-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-glx0-dev(察看README qtbase/src/plugins/platforms/xcb)
opengl: sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev
dbus: sudo apt-get install dbus-*dev
(3).Qt5.0.2以后采用了QPA插件跨平台,也就是说在新版本中qws已经无效,取消了embedded, 而是用-xplatform指定目标板配置,以下采用版本5的新方法和QPA进行编译.
下载源码qt-everywhere-opensource-src-5.3.1.tar,解压后进入目录,去qtbase/mkspecs/linux-arm-gnueabi-g++下修改qmake.conf,加入QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
#
qmake configuration for building ith arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
modifications to g++.conf
QMAKE_CC = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc #路径为实际绝对路径名
QMAKE_CXX = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++
QMAKE_LINK_SHLIB = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-g++
modifications to linux.conf
QMAKE_AR = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-objcopy
QMAKE_NM = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-nm -P
QMAKE_STRIP = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-strip
load(qt_config)
保存后退回qmake目录,执行sudo ./configure –prefix=/opt/qt5.3.1-arm-lts -release -opensource -xplatform linux-arm-gnueabi-g++ -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-libjpeg -qt-zlib -no-opengl -no-sse2 -no-openssl -no-nis -no-cups -no-glib -no-iconv -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-separate-debug-info -nomake examples -nomake tools -I/home/tiydy/armlib/tslib/include -L/home/tiydy/armlib/tslib/lib
之后make 、make install,这里如果make -jN 可能会出错,多线程编译下有些文件提前与依赖文件编译,导致报错。