ubuntu下搭建QT开发环境

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

猜你喜欢

转载自blog.csdn.net/Kernel_Heart/article/details/90514603