由于./configure时加上-fontconfig编译项后,在编译过程中可能会出错,提示fontconfig未通过,这是由于缺少freetype相关头文件造成的,所以首先要保证freetype开发库已经安装:
终端命令: sudo apt-get install libfreetype6-dev
安装后发现freetype头文件没在标准路径,于是做软链接
终端命令: sudo ln -s /usr/include/freetype2/freetype /usr/include/freetype
另外还需要安装fontconfig开发库
终端命令: sudo apt-get install libfontconfig1-dev
1.qt-everywhere-opensource-src-5.9.0.tar.gz下载源码包
2.解压
3.配置configure
./configure -static -release -qt-zlib -qt-libpng -qt-libjpeg -qt-sqlite -fontconfig -prefix /usr/local/Trolltech/Qt-5.9.0_static
4.make
5.make install
6.添加环境变量
QTDIR=/usr/local/Trolltech/Qt-5.9.0_static/
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATH LD_LIBRARY_PATH
7.重启,执行qmake -v查看是否能显示版本号
编译程序
1.例如一个已有的qt工程,将工程目录下的*.pro和*.pro.usr文件删掉
2.执行qmake -project生成一个新的pro文件
3.修改pro文件,在里边添加CONFIG += static
4.执行qmake生成Makefile
5.修改Makefile,在CXXflags选项后面加上 -static
6.执行make生成可执行文件,此时可执行文件大小为几十M
报错:执行make时可能会产生一下报错
In file included from main.cpp:1:0:
mainwindow.h:4:23: fatal error: QMainWindow: 没有那个文件或目录
#include <QMainWindow>
^
compilation terminated.
这个错误是因为执行qmake -project生成新的pro文件,这个文件里什么配置都没有,需要我们加上 QT += core widgets
或其他一些工程需要的静态库动态库等等,也就是第2步生成的是一个很原生的一个pro文件,具体的配置需要自己加上