RK3588 opencv与ffmpeg交叉编译

第二次做交叉编译遇到问题,决定写个帖子记录一下方便以后自己翻看。

opencv交叉编译

编译前准备

本人使用cmake-gui进行交叉编译,需要下载安装cmake和cmake-gui

sudo apt install cmake
sudo apt-get install cmake-gui

交叉编译

进入下载好的opencv源码,此处本人使用的是opencv-3.4.16
新建 一个build文件夹
在这里插入图片描述
进入该文件夹后启动gui

sudo cmake-gui

Where is the source code 选择OpenCV所在目录,Where to build the binaries选择OpenCV下的build文件夹:
此处参考:https://blog.csdn.net/wjpwjpwjp0831/article/details/128269371
在这里插入图片描述
之后点左下角的configure,进行如图配置:
在这里插入图片描述
点击next,然后如图配置:
在这里插入图片描述
点击finish,成功后,在Search栏中搜索PREFIX, 选定安装目录到install文件夹下:
在这里插入图片描述
再次点击configure,点击generate。
成功后执行:

sudo make -j8

其中-j8指的是使用八个核进行编译
成功后,运行:

make install

**注意!!!:此处的opencv交叉编译不是带上ffmpeg的交叉编译,我目前还不需要这个功能
**需要的话参考:https://juejin.cn/post/7145357203107479565

报错信息汇总:

报错一:

在make的过程中报错:

ld: ../../lib/libopencv_imgcodecs.so.3.4.16: undefined reference to `png_do_expand_palette_rgb8_neon'

解决办法:
找到3rdparty/libpng/CMakeLists.txt
在最上面加上添加如下语句:

SET(ARM 1)
SET(ENABLE_NEON 1)

添加完成后重新运行

sudo cmake-gui

重新配置和生成。

ffmpeg交叉编译

为了后续的推流工作需要使用ffmpeg环境

编译前准备

apt-get install build-essential pkg-config

x264下载:git clone http://git.videolan.org/git/x264.git
ffmpeg源码下载:https://ffmpeg.org/download.html#releases

交叉编译x264

参考:https://blog.csdn.net/weixin_45824067/article/details/133465605
动态库:

./configure --prefix=/home/topeet/Documents/tool/x264arm --host=arm-linux --cross-prefix=aarch64-linux-gnu- --disable-asm --enable-shared


make -j8
sudo make install

静态库:

./configure --prefix=/home/topeet/Documents/tool/x264arm --host=arm-linux --cross-prefix=aarch64-linux-gnu- --disable-asm
	
make clean;make -j8
sudo make install

至此完成x264的交叉编译

交叉编译ffmpeg

参考:https://blog.csdn.net/m0_46493410/article/details/136279956?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-136279956-blog-131804601.235v43pc_blog_bottom_relevance_base7&spm=1001.2101.3001.4242.1&utm_relevant_index=3
首先解压ffmpeg源码包

tar -zxvf ffmpeg-4.2.9.tar.gz

进入:

cd ffmpeg-4.2.9

由于x264的pkgconfig不叫pkg-config,这会导致后续ffmpeg交叉编译时找不到x263的库,但是又不敢乱改文件夹名字,所以这里参考:https://blog.csdn.net/qq_25105163/article/details/107109419

编辑/etc/profile:

sudo vi /etc/profile

添加这一行:

export PKG_CONFIG_PATH=$X264_HOME/lib/pkgconfig

然后保存,执行

source /etc/profile

然后再进行带x264的ffmpeg的交叉编译:

./configure --enable-cross-compile --target-os=linux --arch=aarch64 \
	--cross-prefix=/home/topeet/Documents/opt/toolchain/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu- \
	--cc=/home/topeet/Documents/opt/toolchain/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc \
	--cxx=/home/topeet/Documents/opt/toolchain/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-g++ \
	--prefix=/home/topeet/Documents/tool/ffmpeg-4.2.9arm \
	--extra-cflags=-I/home/topeet/Documents/tool/x264arm/include \
	--extra-ldflags=-L/home/topeet/Documents/tool/x264arm/lib \
	--disable-asm --enable-parsers --disable-decoders --enable-decoder=h264 --disable-debug --enable-ffmpeg --enable-shared --disable-static --disable-stripping --disable-doc --enable-libx264 --enable-gpl

执行make命令编译,并查看是否编译成功,有无报错。

make -j$(nproc)
 
make install

至此完成ffmpeg的交叉编译

  • 23
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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,并将编译好的库文件和头文件拷贝到板子上进行开发使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值