rk1108交叉编译opencv-3.4.6过程记录

  1. ubuntu16.04 x64系统,搭建好rk1108开发板的交叉编译环境,并设置交叉编译器环境变量。
  2. 下载压opencv-3.4.6.zip压缩包并解压,下载链接: https://github.com/opencv/opencv/releases/tag/3.4.6
  3. unzip opencv-3.4.6.zip
    cd opencv-3.4.6
    mkdir build
    cmake-gui
    使用cmake-gui进行设置,步骤如下,如下图1所示,选择生成Makefile的类型:
    在这里插入图片描述
    图1
    如下图2所示,配置交叉编译器的路径,图中Operating System请务必填写Linux,设置完毕后,单击finish,结束编译器配置过程,出现图3所示界面。
    在这里插入图片描述
    图2
    在这里插入图片描述
    图3
    依照以下图4,5,6,7片所示,进行配置项设置:
    在这里插入图片描述
    图4
    在这里插入图片描述
    图5 (安装路径设置,建议修改一下安装路径,参考上图5)
    在这里插入图片描述
    图6
    在这里插入图片描述
    图7
    按照上述步骤,完成配置
  4. 编译opencv:make -j4
    编译过程会出现如下error:
    在这里插入图片描述
    图8
    解决方式如下:
    vim ${HOME}/opencv-3.4.6/3rdparty/libpng/pngpriv.h
    注释掉一行:
    /*# if (defined(ARM_NEON) || defined(__ARM_NEON)) && \ */
    并添加一行:
    #if defined(PNG_ARM_NEON) && (defined(ARM_NEON) || defined(__ARM_NEON)) &&
    修改完成后,继续执行:make -j4 知道编译完成。
  5. 安装opencv: sudo make install,安装完成后,可在安装路径看到如下库函数:
    在这里插入图片描述
    图9

注:之前交叉编译完成后,使用opencv时,总会报如下的警告:
warning: …/…/lib/libopencv_imgproc.so, needed by …/lib/libopencv_imgcodecs.so, not found (try using -rpath or -rpath-link)
使用命令查看:readelf -d libopencv_imgproc.so | grep NEEDED

0x00000001 (NEEDED) 共享库:[…/…/lib/libopencv_core.so]
0x00000001 (NEEDED) 共享库:[libstdc++.so.6]
0x00000001 (NEEDED) 共享库:[libm.so.0]
0x00000001 (NEEDED) 共享库:[libgcc_s.so.1]
0x00000001 (NEEDED) 共享库:[libc.so.0]

尝试了多种编译方式,最终得以解决,具体解决办法:
需要保证在开始设置的时候 CMAKE_SYSTEM_NAME 是否被设置为Linux 若你的工程中未设置或设置为其它值,建议修改其为 Linux,即图2进行设置的时候,Operating System请务必填写Linux,设置后,完成编译。
使用命令查看: readelf -d libopencv_imgproc.so

Dynamic section at offset 0x310478 contains 33 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libopencv_core.so.3.4]
0x00000001 (NEEDED) Shared library: [libdl.so.1]
0x00000001 (NEEDED) Shared library: [libpthread.so.1]
0x00000001 (NEEDED) Shared library: [librt.so.1]
0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
0x00000001 (NEEDED) Shared library: [libm.so.1]
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libc.so.1]
发现…/…/lib路径没有了,直接依赖当前文件夹下的文件。

交叉编译opencv时常用到,在此记录,给自己做个参考!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
RK3588上进行交叉编译OpenCV的方法如下: 1. 在自己的Ubuntu系统上安装交叉编译工具,可以通过以下命令安装: ``` sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu ``` 2. 下载OpenCV源代码并解压缩,可以从OpenCV官方网站或者GitHub上获取最新版本的源代码。 3. 进入解压缩后的OpenCV目录,并创建一个用于编译的目录: ``` cd opencv mkdir build cd build ``` 4. 配置交叉编译环境,使用以下命令: ``` cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/path/to/install -D CMAKE_TOOLCHAIN_FILE=/path/to/toolchainfile .. ``` 注意将`/path/to/install`替换为你希望安装OpenCV的路径,将`/path/to/toolchainfile`替换为你的交叉编译工具的路径。 5. 执行以下命令开始编译: ``` make -j$(nproc) ``` 这将使用多个线程进行编译,加快编译速度。 6. 编译完成后,将编译好的库文件和头文件拷贝到RK3588上: ``` scp libopencv_core.so libopencv_imgproc.so libopencv_highgui.so user@rk3588:/path/to/destination scp -r ../modules/core/include/opencv4 user@rk3588:/path/to/destination/include ``` 将`user@rk3588`替换为你的RK3588板子的用户名和IP地址,将`/path/to/destination`替换为你希望保存库文件和头文件的目标路径。 7. 在RK3588上使用交叉编译后的OpenCV库进行开发,可以通过添加以下编译选项来OpenCV库: ``` -L/path/to/destination -lopencv_core -lopencv_imgproc -lopencv_highgui ``` 将`/path/to/destination`替换为你保存OpenCV库文件的路径。 通过以上步骤,你可以在RK3588上进行交叉编译OpenCV,并将编译好的库文件和头文件拷贝到板子上进行开发使用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值