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