ubuntu16.40 Qt靜態編譯 版本5.9.2

 最近項目需求使用到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 看下版本   

    編譯 靜態 Qt程序

    1.好比如今有一個test.cpp文件 
    2.生成.pro文件

     qmake -project

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

     CONFIG+=static

    4.生成Makefile文件

     qmake

       5.修改Makefile文件,在CXXflags選項後面加上 -static 


      6.生成可執行二進制文件

      make

相關文章
相關標籤/搜索