- 编译平台:Ubuntu18.04 x86平台
- 目标平台:ZYNQ-7100 Ubuntu20 ARM
- 交叉编译工具:gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.
- 方式:使用cmake-gui进行交叉编译。(好像还有一种是在CMakeLists.txt中将gcc编译器设置为交叉编译工具,没研究过。)
一、交叉编译工具的下载和使用
1. 下载
下载地址:https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/
我选择的是7.5版本,64位。可根据实际需要更换。如果自己的ARM平台是32位,可以用32位编译器,也可以用64位的编译器;但如果ARM是64位,只能用64位的编译器编译。(向下兼容) 可以退到上一层目录,选择对应的32位编译器目录,如下图所示。
2. 使用
- 下载完成之后,解压到自己选定的目录(这里假设解压目录为 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu )
- 接下来,在终端输入 cmake-gui 打开cmake的界面窗口(前提是你必须安装了cmake-gui,这里不赘述),如下图,第一栏选择opencv的源码目录,第二栏选择一个自己创建的用于存放编译文件的临时目录。
- 点击Configure,弹框中选择最后一项。
- 点击Next进入到如下界面。
- Operating System填写为Linux
- Compliers中C的编译器选择 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
- Compliers中C++的编译器选择 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
- Target Root填写为 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
- 最后点击Finish。
- C和C++的编译器路径就在自己交叉编译工具解压目录中的bin文件夹中进行选择
- 看有些博客也说Target Root 应该填对应的include和lib所在文件夹,在这里就是 /home/undergoer/For_ARM/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu 。但是这两种目前都可以,应该是有某种深意我还没有接触到,之后碰到再补充吧。
5. 开始编译
- 点击Finish之后,它会自己进行一次Configure,一般没有问题,会Configure Done。
- 然后自己修改 CMAKE_INSTALL_PREFIX 配置项,可以修改为自己指定的安装目录,方便之后直接复制到ARM中。
- 修改完成后,再点击一次Configure,Configure Done
- 再点击Generate,Generate Done
- 这个时候,就去那个临时目录下打开终端,输入 make 指令开始编译
- 编译完成后, make isntall 安装到自己指定的安装目录,复制到ARM中即可。
3. 错误及解决方案
- 注意自己ARM对应是32位还是64位,交叉编译工具千万不能弄错。
- 在编译过程中,遇到了下图所示的问题。参考博主的解决方法,成功解决!
https://blog.csdn.net/u010571709/article/details/122103591
文章出处登录后可见!
已经登录?立即刷新