Linux 下 PC 與 ARM 版 qt + opencv 環境搭建(Qt Creator)

這幾天搞 Qt,不當心翻出了好久好久之前寫的一個文件,記錄的是在 Linux 下,Qt Creator 裏面配置 qt 和 opencv 庫的過程。html

當時是要在嵌入式板子上運行程序,因此我配置了 arm 版的 qt 和 opencv,而在移植到板子上以前,須要在 PC 上調試程序,因此最終結果是 PC 版和 ARM 版都配置了,這也是 Qt 支持多平臺的一個體現。java

爲了迎合當時那個板子,配置過程都是手動下的包,而後本身編譯的,這種方式能夠安裝指定版本的庫,apt-get install 安裝的版本是固定的。linux

那個時候的習慣還不夠好,因此係統環境什麼的也沒有記錄下來,只是記錄了過程,有須要的小夥伴能夠參考一下過程:bash

1. Cmake安裝與環境變量配置

從網頁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

 

 

2. ffmpeg安裝

(參考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的意思。

3. Opencv安裝(安裝前確認已安裝cmake、ffmpeg)

安裝前先安裝相關包:

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

4. QT 庫編譯

(可參考網頁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。

1PC

進入解壓後的目錄,修改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

 

5. QT creator安裝與配置

(參考網頁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。

相關文章
相關標籤/搜索