Linux 下 PC 与 ARM 版 qt + opencv 环境搭建(Qt Creator)

这几天搞 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://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。

posted @ 2019-02-23 10:55  花心葬空魂  阅读(3628)  评论(0编辑  收藏  举报