ARM环境下OpenCV使用CMake配置编译详解

需积分: 50 3 下载量 179 浏览量 更新于2024-09-07 收藏 141KB TXT 举报
"opencv arm编译cmake配置后生产的CmakeCache.txt" 在计算机科学和软件开发领域,尤其是针对OpenCV(开源计算机视觉库)这样的项目,CMake是一种跨平台的构建系统,用于管理项目的编译过程。CMakeCache.txt文件是CMake在配置构建过程时生成的一个重要文件,它包含了特定于构建环境的变量设置和编译选项。这份摘要描述的是在ARM架构上编译OpenCV时,使用CMake配置后生成的CMakeCache.txt文件内容。 在CMakeCache.txt文件中,每一行以`#`开头的都是注释,用于解释各个变量的作用。非注释行则定义了具体的变量和它们的值,格式通常为`KEY:TYPE=VALUE`。`KEY`是变量名,`TYPE`是变量类型,`VALUE`是该变量当前设置的值。 例如,`ANT_EXECUTABLE:FILEPATH=ANT_EXECUTABLE-NOTFOUND`表示Ant构建工具的可执行路径未找到,这意味着在构建过程中可能无法使用Ant进行Java相关的构建任务。`BUILD_CUDA_STUBS:BOOL=OFF`表明没有开启构建CUDA模块的stub功能,这可能是因为没有找到CUDA SDK或者不打算在目标平台上使用GPU加速。 其他的变量如`BUILD_DOCS:BOOL=ON`表示会构建OpenCV的文档,`BUILD_EXAMPLES:BOOL=OFF`意味着例子程序不会被构建,`BUILD_JASPER:BOOL=OFF`、`BUILD_JPEG:BOOL=OFF`和`BUILD_OPENEXR:BOOL=OFF`分别表示Jasper、JPEG和OpenEXR库将不会从源代码构建,而`BUILD_PACKAGE:BOOL=ON`则说明会执行创建软件包的命令,方便部署。 `BUILD_PERF_TESTS:BOOL=...`控制性能测试是否被构建,这对于评估和优化OpenCV的性能至关重要。此外,还有其他许多变量,如`BUILD_TESTS:BOOL`用于决定是否构建测试用例,`CMAKE_BUILD_TYPE`定义了构建类型(如Debug或Release),以及各种库路径和包含路径的设置等。 在ARM平台上编译OpenCV时,这些配置可以根据具体需求进行调整,比如如果需要在设备上运行CUDA支持的代码,就需要开启`BUILD_CUDA_STUBS`并正确指定CUDA SDK路径。同时,为了在资源有限的ARM设备上节省空间,可能需要关闭不必要的库构建选项,如Jasper、JPEG等。 CMakeCache.txt文件是CMake配置的静态快照,反映了当前构建环境的设置。理解和修改这个文件可以帮助开发者定制OpenCV的编译过程,以满足特定平台和应用场景的需求。对于OpenCV这样的大型项目,合理的配置可以优化编译速度,减少内存占用,以及确保所有依赖项正确无误。
2013-07-24 上传
opencv2.4.4移植到ARM 一、编译环境及库文件 linux环境:ubuntu 11.10 交叉编译:4.6.1 opencv: opencv-2.4.4 cmake: cmake-2.8.1-Linux-i386.tar.gz 二、opencv-2.4.4的移植过程 解压cmake-2.8.1-Linux-i386.tar.gz到/usr/local/ cmake-2.8.1 #export PATH= /usr/local/ cmake-2.8.1/bin:$PATH 用到的主要目录说明: 交叉编译工具链所在目录 /usr/local/arm-4.6.1/ 安装opencv的目录 /usr/local/ opencv源码所在目录 /usr/local /opencv-2.4.4 编译好的opencv库所在目录 /usr/local /opencv-2.4.4/build 默认安装目录为/usr/local #mkdir build #cd build #cmake-gui 选择源代码目录 /usr/local /opencv-2.4.4 选择Build目录 /usr/local /opencv-2.4.4/build 点击Configure,保持generator为Unix Makefiles,选择Specify options for cross-compiling,点击Next, Operating System填写arm-linux C Compilers填写/usr/local/arm-4.6.1//bin/arm-none-linux-gnueabi-gcc C++ Compilers填写/usr/local/arm-4.6.1//bin/ arm-none-linux-gnueabi -g++ 程序库的Target Root填写/usr/local/arm-4.6.1/ 然后点击Finish,开始configure 点击Generate生成Makefile(等configure完之后按钮才能点击) #make 错误一: Linking CXX executable ../../bin/opencv_createsamples ../../lib/libopencv_core.so: undefined reference to `clock_gettime' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc' ../../lib/libopencv_core.so: undefined reference to `pthread_key_create 解决方法: 修改CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,重新编译,错误消除 错误二: Linking CXX executable ../../bin/opencv_createsamples ../../lib/libopencv_highgui.so: undefined reference to `_TIFFerrorHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFrealloc' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmalloc' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcpy' ../../lib/libopencv_highgui.so: undefined reference to `TIFFOpen' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFfree' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFwarningHandler' ../../lib/libopencv_highgui.so: undefined reference to `_TIFFmemcmp' ../../lib/libopencv_high