這幾天搞 Qt,不小心翻出了很久很久以前寫的一個文件,記錄的是在 Linux 下,Qt Creator 里面配置 qt 和 opencv 庫的過程。
當時是要在嵌入式板子上運行程序,所以我配置了 arm 版的 qt 和 opencv,而在移植到板子上之前,需要在 PC 上調試程序,所以最終結果是 PC 版和 ARM 版都配置了,這也是 Qt 支持多平台的一個體現。
為了迎合當時那個板子,配置過程都是手動下的包,然后自己編譯的,這種方式可以安裝指定版本的庫,apt-get install 安裝的版本是固定的。
那個時候的習慣還不夠好,所以系統環境什么的也沒有記錄下來,只是記錄了過程,有需要的小伙伴可以參考一下過程:
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/
將壓縮包解壓到指定目錄/usr/local/中。使用命令
sudo gedit /home/gao/.bashrc
更改環境變量,“gao”為當前用戶名,根據需要更改。若要給所有用戶添加環境變量,則用語句
sudo gedit /etc/profile
無論哪種方法,打開文件后,在最后添加語句
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://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 庫編譯
安裝之前最好先安裝相關的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
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。