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。

相关文章
相关标签/搜索