交叉编译DBoW2至ARM架构

交叉编译DBoW2至ARM架构

1.下载交叉编译链

PC机为x86架构,目标平台为ARM架构,首先需要安装x86至ARM平台的交叉编译链。需要注意的是,编译链上C库的版本需要和目标平台上的C库版本兼容。我起初参考其他博客直接apt-get工具链,之后交叉编译会报libc的问题,所以最好查看目标平台的C库版本后去linaro官网下载对应版本的交叉编译链并解压。我这里下载的版本为gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu。

2.安装CMake

Opencv以及许多库需要通过CMake创建MakeFile,直接sudo apt-get install cmake。

3.下载DBoW2源码

在home目录创建文件夹compile_DBoW2_2,一个子文件夹arm_dbow2,arm_dbow2内再创建build和install两个子文件夹。DBoW2源码下载并解压至compile_DBoW2_2文件夹内。

4.修改DBoW2的CMakeLists.txt

打开DBoW2目录下的CMakeLists.txt。
1.检索-march=native并删除。
2.将LIBRARY_OUTPUT_PATH改为set(LIBRARY_OUTPUT_PATH /home/andrew/compile_DBoW2_2/arm_dbow2/install/lib)
3.注释掉此段代码`

#find_package(OpenCV 3.0 QUIET)
#if(NOT OpenCV_FOUND)
#  find_package(OpenCV 2.4.3 QUIET)
#  if(NOT OpenCV_FOUND)
#     message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
#  endif()
#endif()

替换为

set(OpenCV_INCLUDE_DIRS "/home/andrew/compile_opencv/6.24.2(newest)/install/include")
set(OpenCV_LIBS "/home/andrew/compile_opencv2/arm_opencv/install2/lib")

这里引用的应该是交叉编译后的OpenCV库,可以参考此前的博客。

5.配置工具链

在任意位置打开终端,输入cmake-gui。设置source code路径为/home/andrew/compile_DBoW2_2/DBoW2,build路径为/home/andrew/compile_DBoW2_2/arm_dbow2/build。点击configure,
在这里插入图片描述选择第四项后点击next,OS随意命名即可,C、C++编译器、Target Root一定要选择正确:
在这里插入图片描述点击finish。search位置输入CMAKE_INSTALL_PREFIX,修改编译后的路径为/home/andrew/compile_DBoW2_2/arm_dbow2/install,这里默认为/usr/local,不修改会影响主机上原有库的使用。search位置输入OpenCV_DIR,修改为/home/andrew/compile_opencv2/arm_opencv/install2/share,调用的是之前已经交叉编译好的OpenCV库。再次点击configure并generate,完毕后关闭cmake-gui。

6.build目录下make

进入build目录下打开终端,输入make开始编译,应该不会报错。无需sudo make install。
交叉编译DBoW2至ARM架构_第1张图片

7.加入头文件

把DBoW2原文件夹下的DBoW2和DUtils文件夹复制到/home/andrew/compile_DBoW2_2/arm_dbow2/install下,因为里面含有头文件,而编译出来的install目录下仅有动态库没有头文件。

8.测试

目前没找到简单的test程序。

你可能感兴趣的:(交叉编译)