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

      

    

 

     

           


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM