ubuntu16.40 Qt静态编译 版本5.9.2

 最近项目需求使用到Qt,由于Qt默认编译出来的程序是动态库,发布的时候依赖库太多,所以想编译一个静态的Qt。不扯了,入题

   静态的Qt

1.版本选择

  5.9.2版本,坚持最新--5.9.1版本中存在相机使用时主线程超过300毫秒Qt内部会返回错误(CameraBin error: "Internal data flow error.")导致相机停止工作,Qt官方在5.9.2已处理。

2.编译过程 (建议看下官方的编译文档, )

  2.1:从Qt官网下载源代码:  https://www.qt.io  ---我下载的是: qt-everywhere-opensource-src-5.9.2.tar.xz

  2.2 :

  解压: 

   终端命令:  xz -d qt-everywhere-opensource-src-5.9.2.tar.xz 

          终端命令:  tar -xvf qt-everywhere-opensource-src-5.9.2.tar

     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 看下版本   

    编译 静态 Qt程序

    1.比如现在有一个test.cpp文件 
    2.生成.pro文件

     qmake -project

    3.修改.pro文件,在里面加上

     CONFIG+=static

    4.生成Makefile文件

     qmake

       5.修改Makefile文件,在CXXflags选项后面加上 -static 


      6.生成可执行二进制文件

      make

      

    

 

     

           

posted @ 2017-11-28 15:43  smart727  阅读(3442)  评论(0编辑  收藏  举报