最近项目需求使用到Qt,因为Qt默认编译出来的程序是动态库,发布的时候依赖库太多,因此想编译一个静态的Qt。不扯了,入题html
静态的Qtlinux
1.版本选择c++
5.9.2版本,坚持最新--5.9.1版本中存在相机使用时主线程超过300毫秒Qt内部会返回错误(CameraBin error: "Internal data flow error."
)致使相机中止工做,Qt官方在5.9.2已处理。sql
2.编译过程 (建议看下官方的编译文档, )ide
2.1:从Qt官网下载源代码: https://www.qt.io ---我下载的是: qt-everywhere-opensource-src-5.9.2.tar.xzui
2.2 :spa
解压: 插件
终端命令: xz -d qt-everywhere-opensource-src-5.9.2.tar.xz 线程
终端命令: tar -xvf qt-everywhere-opensource-src-5.9.2.tarc++11
2.3 编译的过程( configure , make, make install)以下操做;
终端命令: sudo apt-get install build-essential libgl1-mesa-dev 至于为何见官方文档 http://doc.qt.io/qt-5/linux.html
进入刚解压的目录:终端运行: ./configure --help 查看配置的参数
这里很少强调:注意下面的参数使用及做用
-prefix <dir> ...... The deployment directory, as seen on the target device. [/usr/local/Qt-$QT_VERSION, $PWD if -developer-build] ---->安装目录自行指定 /home/xx/qtstatic
-static .............. Build static Qt libraries [no] (yes for UIKit) -------->静态编译必须指定
-fontconfig .......... Enable Fontconfig support [auto] (Unix only) ------>若是GUI界面支持中文必须指定这个参数,因为刚开始编译没指定,致使从新编译--欲哭无泪
//如下6行是网上查找资料
因为加上-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
因为项目中要使到多媒体中相机功能 必须指定 -gstreamer 且插件必须安装不然相机没法使(defaultServiceProvider::requestService(): no service found for - org.qt-project.qt.camera)
我使用的是 1.0版本
终端命令:
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly gstreamer1.0-plugins-bad
sudo apt-get install libpulse-dev
插件等安装好后执行:
终端命令:
./configure -prefix /home/tzw/qtstatic -confirm-license -opensource -c++std c++11 -platform linux-g++-64 -release -static -qt-sqlite -fontconfig -gstreamer 1.0 -qt-zlib -qt-libpng -qt-libjpeg -qt-xcb -qt-xkbcommon-x11
确保:
Fontconfig ............................. yes
GStreamer 1.0 .......................... yes
PulseAudio ............................. yes
而后 终端命令:
make
等待漫长的几个小时;编译完成后执行:
make install
完成后配置环境变量: 修改/home/你的名字/.profile文件,这是个隐藏文件(ls -a就会显示出来),在文末加入
QTDIR=/home/xx/qtstatic
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATH LD_LIBRARY_PATH
保存重启下;
qmake -v 看下版本
1.好比如今有一个test.cpp文件
2.生成.pro文件
qmake -project
3.修改.pro文件,在里面加上
CONFIG+=static
4.生成Makefile文件
qmake
5.修改Makefile文件,在CXXflags选项后面加上 -static
6.生成可执行二进制文件
make