又是一轮圆月时
记录一下对 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 cmake
sudo apt-get install cmake-gui
2.准备toolchain
工具
这个工具很强大,可以让 camke 实现全自动!
以 openCV 为例,其中有别人已经造好的轮子。
位于 opencv/platforms/linux
目录中(3.4 版的比较全,2.4 版可能会有缺失,从 3.4 版中拷贝即可)。
3.编译依赖工程——以 openCV 为例
- 切换至 opencv 源目录 。
mkdir build_arm
cmake -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 上执行不了,交叉编译成功。