這幾天搞 Qt,不當心翻出了好久好久之前寫的一個文件,記錄的是在 Linux 下,Qt Creator 裏面配置 qt 和 opencv 庫的過程。html
當時是要在嵌入式板子上運行程序,因此我配置了 arm 版的 qt 和 opencv,而在移植到板子上以前,須要在 PC 上調試程序,因此最終結果是 PC 版和 ARM 版都配置了,這也是 Qt 支持多平臺的一個體現。java
爲了迎合當時那個板子,配置過程都是手動下的包,而後本身編譯的,這種方式能夠安裝指定版本的庫,apt-get install 安裝的版本是固定的。linux
那個時候的習慣還不夠好,因此係統環境什麼的也沒有記錄下來,只是記錄了過程,有須要的小夥伴能夠參考一下過程:bash
從網頁https://cmake.org/files/v2.8下載cmake-2.8.8-Linux-i386.tar.gz,而後複製到Ubuntu桌面上,使用命令 cd ~/Desktop 進入桌面,使用解壓命令工具
tar zxvf cmake-2.8.8-Linux-i386.tar.gz –C /usr/local/ui
將壓縮包解壓到指定目錄/usr/local/中。使用命令.net
sudo gedit /home/gao/.bashrc3d
更改環境變量,「gao」爲當前用戶名,根據須要更改。若要給全部用戶添加環境變量,則用語句調試
sudo gedit /etc/profileorm
不管哪一種方法,打開文件後,在最後添加語句
export PATH=$PATH:/usr/local/cmake-2.8.8-Linux-i386/bin
其中camke的版本爲以前下載解壓的版本,若不是此版本根據本身狀況更改。
接下來驗證是否正確安裝,使用語句
root@gao:/home# cmake --version
進行檢驗,句中「gao」爲用戶名,「#」表明根目錄;或直接使用語句
cmake –version
進行檢驗,若是出現版本號信息,說明安裝成功,若是下載的是cmake2.8.8,則版本號信息爲
cmake version 2.8.8
(參考http://blog.csdn.net/yy3097/article/details/51073445
http://www.linuxidc.com/Linux/2012-05/60233.htm)
tar -zxvf ffmpeg-2.0.1.tar.gz
解壓後,編輯profile文件:
sudo apt-get /etc/profile
在文件末尾加上:
export FFMPEG_HOME=/usr/local/ffmpeg
export PATH=$FFMPEG_HOME/bin:$PATH
(若是原來已經配置了java環境變量的話
export PATH=$FFMPEG_HOME/bin:$JAVA_HOME/bin:$PATH
執行 source etc/profile
輸出變量 echo $FFMPEG_HOME)
進入到解壓的目錄中,執行:
./configure --enable-shared --prefix=/usr/local/ffmpeg
--enable-shared 參數聽說是容許其編譯產生動態庫
若是出現異常,提示由於缺乏yasm,須要添加參數,再執行如下命令:
./configure --enable-shared --disable-yasm --prefix=/usr/local/ffmpeg
將/usr/local/ffmpeg/lib/pkgconfig中的 .pc 文件拷到 /usr/local/lib/pkgconfig中
驗證ffmpeg是否安裝好:
ffplay lane.avia
此語句是播放lane.avi的意思。
安裝前先安裝相關包:
sudo apt-get install libgtk2.0-dev pkg-config
將opencv2.4.9安裝包拷貝到Ubuntu,而後解壓至某目錄。進入opencv下的sources目錄,在terminal中輸入
cmake .
來執行CMakeLists.txt,而後輸入
sudo make
以編譯文件,而後輸入
sudo make install
以安裝opencv,OpenCV 會安裝在 /usr/local/lib 目錄和 /usr/local/include/opencv/
而後配置環境變量,輸入
sudo gedit /etc/ld.so.conf.d/opencv.conf
末尾加入/usr/local/lib,保存退出。輸入
sudo ldconfig
使配置生效,輸入
sudo gedit /etc/bash.bashrc
末尾加入
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存退出,輸入
sudo source /etc/bash.bashrc
使配置生效,輸入
sudo updatedb
以更新database
出現錯誤時,如「no such directory 」,極可能是沒有裝好相應的庫,按提示裝須要裝的便可,如缺乏libswscale.h時,可新開窗口執行:
sudo apt-get install libswscale-dev
ARM版opencv:
參考http://blog.csdn.net/xy010902100449/article/details/45092757
CMAKE_EXE_LINKER_FLAGS原來爲空,加上-lpthread -lrt -ldl
http://blog.csdn.net/u012590688/article/details/45665441
(可參考網頁http://www.linuxidc.com/Linux/2014-05/102107p3.htm)
安裝以前最好先安裝相關的lib,這樣能夠防止出現編譯錯誤:
sudo apt-get install libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-dev libglui-dev
下載安裝包qt-everywhere-opensource-src-4.7.1.tar.gz(針對飛凌OK6410),使用root權限將安裝包解壓至/usr/local。
(1)PC版
進入解壓後的目錄,修改build-all文件,刪掉環境變量設置並修改qt設置,最終如圖所示:
而後以root身份運行修改後的文件:
sudo ./build-all
若是出現錯誤提示「Basic XLib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in/home/zhu/Qt/qt-x11-opensource-src-4.5.2/mkspecs/linux-g++」,則新開一個terminal窗口,安裝缺乏的包:
sudo apt-get install libX11-dev libXext-dev libXtst-dev
而後再在原來的terminal窗口中從新運行build-all便可,安裝需N個小時。
若是最後出現「cannot find」錯誤時,多是沒有安裝某些lib,「/usr/bin/ld:cannotfind –lxxx」意思是編譯過程找不到對應庫文件,其中-lxxx表示庫libxxx-dev。
Qt環境變量配置
(參考http://blog.sina.com.cn/s/blog_6028e2630100ych5.html)
在/etc/profile文件裏添加下面幾行語句:
export QTDIR=/opt/qtsdk-xxxx/qt 這個路徑根據本身安裝的位置進行配置
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib
export PATH=$PATH:$QTDIR/bin
保存退出
用qmake –v檢查是否成功配置,不行的話重啓。
(2)ARM版
編譯前先安裝tslib,先在終端在執行:
sudo apt-get install autoconf automake libtool
確保所需的gcc和g++已安裝,且環境變量配置正確,而後解壓tslib至/usr/local,進入/usr/local/tslib,
./configure --host=arm-linux --prefix=/usr/local/tslib/build CC=/usr/local/arm/4.3.2/bin/arm-none-linux-gnueabi-gcc ac_cv_func_malloc_0_nonnull=yes
(編譯tslib,執行make時提示undefined reference to `rpl_malloc',是由於config.h.in文件中有
「/* Define to rpl_malloc if the replacement function should be used. */
#undef malloc「
把#undef malloc註釋掉從新make便可。)
進入qt解壓後的目錄,執行
./configure -prefix /usr/local/qt-4.7.1-linux-arm-install -embedded arm -host-little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm-gnueabi-g++
「-prefix」後爲安裝文件夾
若是報錯,提示「-little-endian」或「-big-dian」,則在上一句後加上相應的選擇從新執行,本文執行的語句是:
./configure -prefix /usr/local/qt-4.7.1-linux-arm-install -embedded arm -host-little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm-gnueabi-g++ -little-endian
根據提示,輸入o和yes,以後就能夠進行make和make install了。
若是make以後出現「arm-none-linux-gnueabi-g++ not found」之類的錯誤,說明程序找不到相應的文件夾,若是確認已安裝成功,就須要指定其路徑,進入解壓後文件夾,進入mkspecs/qws/linux-arm-gnueabi-g++,編輯文件qmake.conf,在全部「arm-none-linux-gnueabi- * 」之類語句以前加上它的路徑,個人路徑爲「/usr/local/arm/4.3.2/bin/」,退出保存,從新./confure和sudo make。
環境變量配置與以前相似
export ARMQTDIR=/usr/local/qt-everywhere-opensource-src-4.7.1/usr/local/qt-4.7.1-linux-arm-install(根據本身安裝的路徑更改)
export PATH=$ARMQTDIR/bin:$PATH
export LD_LIBRARY_PATH=$ARMQTDIR/lib:$LD_LIBRARY_PATH
(參考網頁http://blog.csdn.net/lanbing510/article/details/41698517)
下載的是qt-creator-linux-x86-opensource-2.4.1.bin,直接運行而後安裝。而後運行qt creator,在tools的option對話框中點擊左側Build & Run,而後點擊右面add,路徑爲所須要添加qmake的路徑。個人路徑添加了兩個,一個是PC版qmake一個是arm版qmake,路徑分別爲/opt/qt-4.7.1/bin/qmake、/usr/local/qt-everywhere-opensource-src-4.7.1/usr/local/qt-4.7.1-linux-arm-install/bin/qmake。cmake路徑爲/usr/bin/cmake。點擊ok關閉option對話框。
若是添加qmake時出現「default mkspec symlink is broken」錯誤時,說明連接出現問題,進入mkspecs文件夾刪除default,而後運行
ln -s qws/linux-arm-gnueabi-g++ default
以此新建一個連接。
若是出現「No qmlviewer installed」錯誤,則先找到qmlviewer的位置,而後將其複製到qt-4.7.1-linux-arm-install/bin/下便可。
創建C++文件步驟:先創建new project,選擇其餘項目中的空qt項目。以後,會出現一個空項目。在項目名上右鍵,選擇add,而後選擇C++ source文件,一個空的C++文件就建好了。運行程序按鈕在左下角。
項目的編譯工具可在項目中點擊左側project進行設定,選擇須要的qmake。