又是一轮圆月时
记录一下对 x86 平台与 arm 平台的交叉编译
1.准备工作
- 安装 gcc:
sudo apt-get install arm-linux-gnueabi-gcc - 安装g++:
sudo apt-get install arm-linux-gnueabi-g++ - 安装cmake:
sudo apt-get install cmakesudo apt-get install cmake-gui
2.准备toolchain工具
这个工具很强大,可以让 camke 实现全自动!
以 openCV 为例,其中有别人已经造好的轮子。
位于 opencv/platforms/linux 目录中(3.4 版的比较全,2.4 版可能会有缺失,从 3.4 版中拷贝即可)。
3.编译依赖工程——以 openCV 为例
- 切换至 opencv 源目录 。
mkdir build_armcmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake ..- 等待直到 cmake 完成 。

- 如果安装了
cmake-gui可以双击
设置编译选项。建议去掉 BUILD_DOCS和BUILD_TEST的勾,然后重新点击Configure,Generate,生成 cmake cache。 make -j4开始编译 。

注:如果勾选了 Eigen,注意设置 EIGEN_INCLUDE_PATH 否则可能会出现 fatal error: unsupported/Eigen/MatrixFunctions: No such file or directory错误
3.编译我们的工程
- 切换到才工程目录,
mkdir build_arm。 - 将
toolchain拷贝到我们的 build 目录,linux 目录下的几个toolchain都一起拷贝。 cmake -DCMAKE_TOOLCHAIN_FILE=./arm-gnueabi.toolchain.cmake ..
- 双击
CMakeCache.txt指定OpenCV_DIR为刚才编译生成的目录。然后重新点击Configure,Generate,生成 cmake cache。 make等待编译完成。
6.执行,因为是交叉编译的,在 linux 上执行不了,交叉编译成功。

