1、下载最新Qtcreator(IDE)
下载链接:http://download.qt.io/development_releases/qtcreator/
建议下载最新版本,功能最丰富。
2、下载QT源码
下载地址:http://download.qt.io/archive/qt/
例如:qt-everywhere-opensource-src-4.8.5.tar.gz
下载后解压:tar -zxvf qt-everywhere-opensource-src-4.8.5.tar.gz。
3、编译源码
3.1交叉编译
(1)修改qmake文件( /mkspecs/linux-arm-g++、qmake.conf)
修改编译器为自己的交叉编译,
如果arm目标板上显示屏的驱动是基于fb的,要手动添加:QT_QPA_DEFAULT_PLATFORM=linuxfb
(2)执行configure,建议可以创建一个shell脚本,内容如下:
#!/bin/sh
./configure \
-prefix /usr/local/arm/qt4.8.5\
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-arm-g++ \
-depths 16,18,24,32 \
-fast \
-optimized-qmake \
-little-endian -host-little-endian \
-no-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-libmng \
-qt-libtiff \
-qt-freetype \
-webkit \
-no-openssl \
-no-glib \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-qvfb \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-separate-debug-info \
-nomake docs \
-qt-mouse-tslib \
-qt-mouse-linuxinput \
-qt-kbd-linuxinput \
-qt-gfx-transformed \
-qt-gfx-linuxfb \
-I/usr/local/arm/tslib-1.17/include \
-L/usr/local/arm/tslib-1.17/lib
执行脚本:./qt_cross_compiler.sh
(3)make -j4
(4)make install 2>&1
也可以将结果重定向到本地文件便于查看日志:
./qt_cross_compiler.sh 2>&1 | tee configure_log.txt
make -j4 2>&1 | tee make_log.txt
make install 2>&1 | tee install_og.txt
3.2当前平台编译
(1)./configure -prefix <安装目录> -qvfb
配置时要加上 -qvfb ,否则无法编译生成 qvfb ( Qt/Embedded Virtual Framebuffer ) 工具
(2)make -j4
(3)make install
【出错说明】
(1)configure执行时出现 “Basic XLib functionality test failed!”
缺少libx11的开发包,安装即可:apt-get install libx11-dev libxext-dev libxtst-dev(libxext-dev libxtst-dev可以不安装,因为安装libx11-dev时这两个一起安装了)
(2)make执行时出现:“‘std::tr1’ has not been declared” 等一系列C++关键字没有定义的错误。
- 执行./configure 后,的终端打印信息中搜索mkspecs
或者Build type:
,可以确定当前编译的版本,如:linux-g++
- 打开文件 mkspecs/linux-g++/qmake.conf
- 在QMAKE_CXXFLAGS的值后边加上 -std=gnu++98,例如
:QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++98
- qmake.conf中不存在QMAKE_CXXFLAGS,则在其包含文件中寻找,如下所示包含了三个文件:
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
linux.conf:中又包含了unix.conf
gcc-base-unix.conf:中又包含了gcc-base.conf
g++-unix.conf:中又包含了g++-base.conf
最后在不懈努力下发现了两处QMAKE_CXXFLAGS,gcc-base.conf
和g++-base.conf
。
- 修改完成后执行make confclean,从configure开始重新执行。
4、配置环境变量
修改 /etc/profile和~/.bashrc文件,在最后追加如下内容:
export QTDIR=/uer/local/Trolltech/
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
保存退出后,执行如下指令使配置生效:
source /etc/profile
source ~/.bashrc
5、验证是否安装成功
qmake -v
出现qmake版本相关信息则表示成功,如果提示qmake可执行程序不存在,则说明安装失败。
6、QTCreator添加Kit
此步骤略,按照QTCreator IDE配置即可。
7、实际使用QTCreator编译程序时会出现以下问题
(1)X Error,出现以下提示内容,并且编译出的QT图形界面是白色的框没有任何控件:
X Error: BadAccess (attempt to access private resource denied) 10
Extension: 130 (MIT-SHM)
Minor opcode: 1 (X_ShmAttach)
Resource id: 0x15e
X Error: BadShmSeg (invalid shared segment parameter) 128
Extension: 130 (MIT-SHM)
Minor opcode: 5 (X_ShmCreatePixmap)
Resource id: 0x460000c
X Error: BadDrawable (invalid Pixmap or Window parameter) 9
Major opcode: 62 (X_CopyArea)
Resource id: 0x460000d
修改 /etc/profile和~/.bashrc文件,在最后追加如下内容:
export QT_X11_NO_MITSHM=1
保存退出后,执行如下指令使配置生效:
source /etc/profile
source ~/.bashrc
(2)控件中的中文全消失不见了,无法正常显示
首先检查qt安装目录下 /usr/local/Trolltech/lib/fonts目录下有没有当前使用的字体,如:Ubuntu-B.ttf Ubuntu-L.ttf
如果没有fonts目录则创建,并拷贝字体文件到该目录下。
问题仍没有解决,则修改 /etc/profile和~/.bashrc文件,追加内容如下:
export QT_QPA_FONTDIR=/usr/local/Trolltech/lib/fonts/
保存退出后,执行如下指令使配置生效:
source /etc/profile
source ~/.bashrc