基于ARM 的Linux体系的交叉编译(17)

立山  金牌会员 | 2024-8-14 21:19:32 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 579|帖子 579|积分 1737

  返回:OpenCV系列文章目次(连续更新中......)

上一篇:在 MacOS 中安装(16)

下一篇:MultiArch与Ubuntu/Debian 的交叉编译(18)


告诫
本教程可以包含过期的信息。
此步骤已在 Ubuntu Linux 12.04 上进行了测试,但应该适用于其他 Linux 发行版。我在其他发行版的情况下,包名和交叉编译工具的名称可能会有所不同。ARM 平台上利用了几种流行的 EABI 版本。本教程是为 gnueabi 和 gnueabihf 编写的,但其他变体应该只需进行最小的更改即可利用。
前提:



  • 利用 Linux 的主机;
  • Git的;
  • CMake 2.6 或更高版本;
  • ARM 交叉编译工具:gcc、libstc++ 等。根据目标平台,您需要选择 gnueabi 或 gnueabihf 工具。gnueabi 的安装命令:           
    1. sudo apt-get 安装 gcc-arm-linux-gnueabi
    复制代码
              
    1. gnueabihf 的安装命令:
    复制代码
             
    1. sudo apt-get install gcc-arm-linux-gnueabihf
    复制代码
        包设置;
  • 用于主机体系的 Python 2.6;
  • [可选] armeabi(hf) 的 ffmpeg 或 libav 开发包:libavcodec-dev、libavformat-dev、libswscale-dev;
  • [可选]GTK+2.x 或更高版本,包括 armeabi(hf) 的标头 (libgtk2.0-dev);
  • [可选] libdc1394 2.x;
  • [可选] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev for armeabi(hf).
获取OpenCV源代码

您可以利用 sourceforge 中提供的最新稳定 OpenCV 版本,也可以从我们的 Git 存储库中获取最新的快照。
获取最新的稳定OpenCV版本



  • 转到 Sourceforge 上的页面;
  • 下载源码压缩包并解压缩。
从Git存储库获取尖端的OpenCV

启动 Git 客户端并克隆 OpenCV 存储库
在 Linux 中,可以通过终端中的以下命令来实现:
  1. cd ~/<my_working _directory>
  2. git clone https://github.com/opencv/opencv.git
复制代码
编译 OpenCV


  • 创建一个天生目次,使其成为当前目次,然后运行以下命令:
    1. cmake [<some optional parameters>] -DCMAKE_TOOLCHAIN_FILE=<path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory>
    复制代码
    默认情况下,工具链利用 gnueabihf EABI 约定。添加 -DSOFTFP=ON cmake 参数以打开 softfp 编译器。
    1. cmake [<some optional parameters>] -DSOFTFP=ON -DCMAKE_TOOLCHAIN_FILE=<path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory>
    复制代码
    例如:
    1. cd ~/opencv/platforms/linux
    2. mkdir -p build_hardfp
    3. cd build_hardfp
    4. cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../..
    复制代码

  • 在 build(<cmake_binary_dir>)目次中运行:
    1. make
    复制代码
注意
或者,您可以通过 install/strip make target 从创建的库中去除符号信息。此选项天生更小的二进制文件(小两倍),但使进一步调试更加困难。
启用硬件优化

根据目标平台架构,可以利用不同的指令集。默认情况下,编译器为没有 VFPv3 和 NEON 扩展的 armv5l 天生代码。将 -DENABLE_VFPV3=ON 添加到 cmake 命令行以启用 VFPv3 的代码天生,并将 -DENABLE_NEON=ON 添加到利用 NEON SIMD 扩展。
多核 ARM SoC 也支持 TBB。添加 -DWITH_TBB=ON 和 -DBUILD_TBB=ON 以启用它。Cmake 脚本从项目官网下载TBB源码GitHub - oneapi-src/oneTBB: oneAPI Threading Building Blocks (oneTBB) 并编译建。参考文献:
1、《Cross compilation for ARM based Linux systems》--Alexander Smorkalov

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

立山

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表