1、配置
Qt版本:4.8.3
Ubuntu版本:14.04LTS(32bit)
1.1 脚本
编写一个配置脚本qt4.8.3_configure-for-x86.sh,内容如下:
cho -e "o\nyes" | ./configure -prefix $HOME/Qt4.8.3 -debug-and-release -webkit -dbus -svg -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg
说明:a) -webkit选项,表示编译webkit模块[1];
b)-dbus选项,表示编译dbus模块,maliit-keyboard需要用到这个模块,详见《Ubuntu中编译安装maliit-0.94-qt4》;
c)-svg选项,表示编译svg模块,支持svg图像[5],maliit-keyboard需要用到这个模块,详见《Ubuntu中编译安装maliit-0.94-qt4》。
d) -prefix选项,指定Qt安装路径。
使用以下命令使得可执行:
ubuntu $ sudo chmod +x qt4.8.3_configure-for-x86.sh执行配置文件:
ubuntu $ ./qt4.8.3_configure-for-x86.sh
如果修改了参数,需要重新配置:
To reconfigure, run 'make confclean' and 'configure'.
1.2 Basic XLib functionality test failed!
配置过程出现了这个错误:
Basic XLib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/liyihai/es/qt-everywhere-opensource-src-4.8.3/mkspecs/linux-g++.
经过查找,发现系统上已经安装好X11,并且存在/usr/include/X11和/usr/lib/X11。因此猜想是环境变量的设置问题,提出了1.2.1和1.2.2的尝试方法。
1.2.1 方法1
根据提示,在/home/liyihai/es/qt-everywhere-opensource-src-4.8.3/mkspecs/linux-g++/qmake.conf中添加
QMAKE_INCDIR_X11 = /usr/include/X11 QMAKE_LIBDIR_X11 = /usr/lib/X11结果问题依旧!
1.2.3 方法2
在~/.bashrc中添加:
export QMAKE_INCDIR_X11=/usr/include/X11 export QMAKE_LIBDIR_X11=/usr/lib/X11结果问题依旧!
1.2.2 方法3
根据参考资料[2]的说法,这是因为系统没有安装libxtst-dev,执行以下命令安装libxtst-dev即可解决问题:
ubuntu $ sudo apt-get install libxtst-dev
2 编译
2.1 make
error: undefined reference to 'WebCore::JSHTMLImageElementPrototype::self(JSC::ExecState*, JSC::JSGlobalObject*)'
这是由于在编译的中途使用Ctrl+C强制终止几次,先make clean,然后再重新make即可。
2.2 make install
编译好后,执行make install进行安装即可。
3 环境变量
在~/.bashrc的末尾添加:
export QTDIR=/home/liyihai/Qt4.8.3 export PATH=$QTDIR/bin:$PATH export QMAKESPEC=$QMAKESPEC:$QTDIR/mkspecs/linux-g++ export LD_LIBRARY_PATH=$QTDIR/lib
重启终端,或者执行以下命令,使环境变量生效:
ubuntu $ source .bashrc
3.1 QMAKESPEC
安照上面的方法设置好环境变量时,对一个工程执行qmake,结果:
liyihai@ubuntu:~/matrix-gui-v2-matrix_browser$ qmake Could not find mkspecs for your QMAKESPEC(:/home/liyihai/es/qt4.8.3_x86/mkspecs/linux-g++) after trying: /home/liyihai/Qt4.8.3/mkspecs根据参考资料[4],将QMAKESPEC的值改为:
export QMAKESPEC=linux-g++
参考资料
[1]Qtwebkit配置,设置交叉编译环境
[2]CENTOS 下安装 QT 遇到遇到错误 QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X1
[3]Ubuntu下的Qt库编译和环境变量设置
[4]为什么linux下Qt程序编译时找不到mkspecs for QMAKESPEC
[5]qt4.8.4+wince7.0+opengles2.0开发环境搭建