您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > linux_+qt4.7+opencv2.2移植到tq2440开发板
linux+qt4.7+opencv2.2移植到tq2440开发板以下操作在Fedora下使用超级用户进行我已经安装了交叉编译器arm-linux-gcc4.3.3和qt4.5的x86和arm版本在目录/opt/EmbedSky下。修改配置文件/etc/profile添加pathmunge/opt/EmbedSky/4.3.3/bin安装CMakeOpenCV2.1的版本,必须使用CMake创建Makefile。我使用的CMake版本是2.6-Linux-i386的,是fedora通过软件添加和载卸功能添加的(这个cmake要重新安装,而且要添加bin进去路径)编译OpenCV:1、解压OpenCV2.1到/opt/EmbedSky/OpenCV-2.1.0目录下2、在超级用户下,运行cmake-gui命令选择源代码目录:/opt/EmbedSky/OpenCV-2.1.0选择Build目录:/home/pww71/opencv-arm/点击Configure,保持generator为UnixMakefiles,选择Specifyoptionsforcross-compiling,点击NextOperatingSystem填写arm-inuxCCompilers选择/opt/EmbedSky/4.3.3/bin/arm-linux-gccC++Compilers选择/opt/EmbedSky/4.3.3/bin/arm-linux-g++程序库的TargetRoot填写/opt/EmbedSky/4.3.3/,然后点击Finish修改默认配置,X86-opencv的cmake配置添加BUILD_EXAMPLES和OPENCV_BUILD_3RDPARTY_LIBS前面的日志已经介绍过了arm-opencv的cmake配置不要加BUILD_EXAMPLES和OPENCV_BUILD_3RDPARTY_LIBS和去掉WITH_TIFFCMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread-lrtx86的opencv默认安装目录为/usr/local,对于arm的交叉编译的库来说并不合适,所以把CMAKE_INSTALL_PREFIX变量改为/usr/local/arm/lib/opencv/没有安装tiff图像的支持,去掉WITH_TIFF点击Generate生成Makefile3、使用超级用户进入目录/home/pww71/opencv-arm,运行make编译opencv4、运行makeinstall,将opencv生成的库和头文件安装到目录/usr/local/arm/lib/opencv/QT的配置已经解压和安装了qt4.5的x86的库和arm交叉交叉编译的库安装qtcreator时记得安装地址并且修改配置文件/etc/profile添加上qtcreator的安装地址的bin目录我的是pathmungepathmunge/opt/EmbedSky/qtcreator-1.3.0/bin为了能找到qmake还要添加路径pathmunge/opt/EmbedSky/qt-4.5/_install/x86/binpathmunge/opt/EmbedSky/qt-4.5/_install/am/bin到配置文件/etc/profile中使用超级用户输入命令source/etc/profile后再执行qtcreator命令打开Qtcreator界面进入Tools-Options左侧选择QT4-QtVersions右侧选项里:如果通过软件添加和载卸工具添加了qt4的话Auto-detected会自动的选择QtinPATH/usr/local/bin/qmake-qt4用这个qmake工具生成的可执行文件不用添加-qws命令行参数自己安装的qt4.5我是如下配置QtinPATH/opt/EmbedSky/qt-4.5/_install/arm/bin/qmake添加Manualx86-qt-4.5.0/opt/EmbedSky/qt-4.5/_install/x86/bin/qmake生成的可执行文件需要添加-qws命令行参数分别点击rebuild最后点击okBuildSettings中根据需要Add刚才配置的选择BUildconfigurationfor...也选择相应的选项在QT工程文件.Pro中添加以下内容INCLUDEPATH+=/usr/local/include/opencvLIBS+=/usr/local/lib/libcv.so\/usr/local/lib/libcvaux.so\/usr/local/lib/libcxcore.so\/usr/local/lib/libhighgui.so\/usr/local/lib/libml.sopc仿真必须将以上库还要添加到项目文件夹里如果是arm开发板的程序则添加以下内容INCLUDEPATH+=/usr/local/arm/lib/opencv/include/opencvLIBS+=/usr/local/arm/lib/opencv/lib/libcv.so\/usr/local/arm/lib/opencv/lib/libcvaux.so\/usr/local/arm/lib/opencv/lib/libcxcore.so\/usr/local/arm/lib/opencv/lib/libhighgui.so\/usr/local/arm/lib/opencv/lib/libml.so编译生成可执行文件移植到开发板提示缺少什么库就按提示添加相应的图像库到lib中以及qt4.5的库和字体都添加到相应的目录中中间有一个这个提示QWSDisplay::Data::init:InvalidargumentClientcan'tattachtomainrammemory.Aborted这个是表示缺少命令行参数-qws是Qt4的问题运行命令添加该参数ok一切正常注意的是qtcreator。bin不能用于pc的编程总是提示找不到opencv图像库系统自带的qt适合pc编程如果提示无法保存文件可以用系统管理登录chmod文件属性自己安装的qt只能用于arm的交叉编译在安装qt4.7的过程中又发现pc版本总是提示找不到opencv图像库后来卸载了qt4.5和qt3,来回重装qt4.7又可以了然后马上保存的系统。******pc编程如果带opencv库会提示找不到库文件。pc的编译器换成交叉编译时先运行qmake生成make文件直接运行rebuilt不行会提示opencv的库文件格式错误。Qtcreator添加qmakerebuild出错[日期:2011-04-23]来源:Linux社区作者:c05170519在Qtcreater--tools--Qptios--Qt4--QtVersions中添加qmake(qtembeddedd版的),然后RebuildDegugginghelper的时候(就是把那个红x变成绿勾)的时候出现下面的错误:Buildingdebugginghelperlibraryin/QT/qte-4.5.0/qtc-debugging-helper/Running/usr/bin/makedistclean...rm-fgdbmacros.orm-f*~core*.corerm-flibgdbmacros.so.1.0.0rm-flibgdbmacros.solibgdbmacros.so.1libgdbmacros.so.1.0libgdbmacros.arm-fMakefileRunning/QT/qte-4.5.0/bin/qmake...Cannotfindfile:.Running/usr/bin/make...arm-linux-g++-c-pipe-g-Wall-W-D_REENTRANT-fPIC-DUSE_QT_GUI=1-DQT_GUI_LIB-DQT_CORE_LIB-DQT_SHARED-I../mkspecs/qws/linux-arm-g++-I.-I../include/QtCore-I../include/QtGui-I../include-I.-I.-ogdbmacros.ogdbmacros.cppmake:arm-linux-g++:命令未找到make:***[gdbmacros.o]错误127最后两行还是乱码,百度google无解。具体怎么找出毛病的忘了,只记得好像上面把qmake添加进环境变量时,如果写进/etc/bash.bashrc,auto-detect是找不到它的,于是对/etc/profle和/etc/bash.bashrc这两个文件产生好奇,一问老师才知道,前者是全局的,对整个系统都有作用的,而后者只对终端起作用,而我的qmake虽然写的是/etc/profile,但是交叉编译器却写进/etc/bash,bashrc(图省事,修改profile要重启电脑,后者只要source以下就可以了),rebuild时需要调用相关的交叉编译器,写在/etc/bash,bashrc的话编译器就找不到了,所以会出错。网上也找到一位东大读博哥么的博客,他是在相关qmake.conf做了修改,在交叉编译器前面加上准确的地址,似乎也能通过,但是包含交叉编译器的qmake.conf有很多同名文件,他修改可能是“正确的”一个,但是其他的都没动,谁知道以后会出什么错呢?解决方法:把交叉编译器写进/etc/profile,而不是/etc/bash.bash.rc配置qtcreator的ARM编译环境下载arm920t-eabi.tar.gz(arm-linux-gcc4.1.2),解压到/opt/arm/4.1.2/目录下打开qtcreator的Options选项,选择QT4选项,添加一个编译环境,Versionname填Qte4.6.3(这个可以随便填),qmakelocation填/opt/qte/bin/qmake(我先前已经编译了QT4.6.3embeded,并安装在/opt/qte/目录下,自己相应修改),点Rebuild,应该会出错。打开命令行,输入sudoln-s/opt/arm/4.1.2/bin/arm-linux-g++/usr/bin/,为arm-linux-g++建立符号链接,因为qtcreator貌似只认/usr/bin/目录下的,PATH里面无效。到这一步已经快好了,但是点Rebuild还是会出错,错误的原因是什么#includenew什么的,这是因为arm-linux-g++找不到头文件。首先,我是按照别人说的在.bashrc里面加入了环境变量:exportCPLUS_INCLUDE_PATH=/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++:/opt/arm/4.1.2/arm-angstrom-linux-gnueabi/include/c++/arm-angstrom-linux-gnueabi,然后重新打开qtcreator,点Rebuild,不行,还是出错。但是在~/qte/example/widgets/calculator/目录下,执行/opt/qte/qmake然后make,已经没有问题了。所以得出结论是,GDM在打开Gnome的时候不会执行.bashrc文件。我需要找一个GDM会执行的文件放export。google的半天,说/etc/gdm/Xsession文件会被执行。但是我看了看这个文件,发现和网上说的不一样,我的是Archlinux。我这个貌似XDM才会执行。又google+乱看了半天,终于被我发现/etc/X11/xinit/xinitrc.d/目录下的都会被执行,于是写了一个cplus_include_path的bash文件,在里面e
本文标题:linux_+qt4.7+opencv2.2移植到tq2440开发板
链接地址:https://www.777doc.com/doc-3372445 .html