这几天搞 Qt,不当心翻出了好久好久之前写的一个文件,记录的是在 Linux 下,Qt Creator 里面配置 qt 和 opencv 库的过程。html
当时是要在嵌入式板子上运行程序,因此我配置了 arm 版的 qt 和 opencv,而在移植到板子上以前,须要在 PC 上调试程序,因此最终结果是 PC 版和 ARM 版都配置了,这也是 Qt 支持多平台的一个体现。java
为了迎合当时那个板子,配置过程都是手动下的包,而后本身编译的,这种方式能够安装指定版本的库,apt-get install 安装的版本是固定的。linux
那个时候的习惯还不够好,因此系统环境什么的也没有记录下来,只是记录了过程,有须要的小伙伴能够参考一下过程:bash
从网页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
(参考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的意思。
安装前先安装相关包:
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
(可参考网页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。
(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
(参考网页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。