zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    什么是大小端
    mina
    出现jar包找不到的问题解决方案
    InnoDB 静态数据加密的常见问题合集
    mysqldump 数据库备份程序,mysqldump 选项合集
    出现The MySQL server is running with the --secure-file-priv option so it cannot问题的原因
    小睡一会,做了一个梦
    IntelliJ IDEA is a solution that appears after importing a project with a clock icon(idea导入项目之后出现时钟的解决方案)
    IntelliJIDE不显示项目文件夹的问题
    夏天的记忆
  • 原文地址:https://www.cnblogs.com/hxzkh/p/10421930.html
Copyright © 2011-2022 走看看