rk3568交叉编译ffmpeg(rk3568)

在开发中各种第三方库和环境配置是比较消耗时间和耐心的,就将ffmpeg交叉编译的过程记录一下。其实其他三方库的编译过程也是这样的,交叉编译其他库时也可以参考本文过程。
Ubuntu上安装的方式大概有以下三种:
① apt-get安装apt-get install build-essential
② dpkg安装deb文件dpkg -i example.deb
③ wget或者手动下载源码后手动编译,手动编译也有两种方式:configure之后make && make install,mkdir build; cd build; cmake .。为了全局可用,需要配置环境变量,也就是在/etc/peofile~/.bashrcexport PATH=$PATH:;有时还需要加入动态装载器(在ld.so.conf加入lib路径)然后运行sudo ldconfig命令加入ld.so.cache

1.资源准备

需要下载交叉编译器和ffmpeg源码,使用交叉编译器编译ffmpeg;

序号网址
交叉编译器https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/
ffmpeg源码https://github.com/BtbN/FFmpeg-Builds/releases

下载源码自己编译即可,如果想要搭建windows命令行可以选择已经编译好的版本
ffmpeg源码
我的目标平台是RK3568,下载x86_64_aarch64-linux-gnu;
交叉编译器下载

2. 安装交叉编译器

交叉编译器就在/bin目录下,只需要将编译器的/bin目录加入环境变量即可;
在这里插入图片描述

tar -vxf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar
# 添加环境变量,把前面的改成自己的目录即可,或者加入/etc/profile
vim ~/.bashrc
export PATH=$PATH:/home/hjs/rk3568/toolKits/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
source ~/.bashrc

验证是否成功:
在这里插入图片描述

3. 交叉编译ffmpeg

–prefix是库编译成功后的安装地址,修改成你想要保存库的目录即可

./configure --prefix=/home/hjs/rk3568/3rparty/ffmpeg --enable-cross-compile --arch=arm64 --target-os=linux --cc=aarch64-linux-gnu-gcc --disable-x86asm --cross-prefix=aarch64-linux-gnu-
make -j4
make install

在这里插入图片描述

./configure --prefix=/home/hjs/rk3568/3rparty/ffmpeg --enable-cross-compile --arch=arm --target-os=linux --cc=aarch64-linux-gnu-gcc --disable-x86asm

用上述配置时出现上图错误 unknown mnemonic itt' -- itt gt’ ,使用本章开始的配置即可。

4.验证是否成功

简单写个cpp程序,配置Makefile编译后复制到目标板上运行,看看是否正常工作

#include <iostream>
extern "C"{
    #include "libavcodec/avcodec.h"
    #include "libavformat/avformat.h"
    #include "libavutil/imgutils.h"
}
int main(){
    std::cout << avcodec_configuration() << std::endl;
    std::cout << av_image_get_buffer_size(AV_PIX_FMT_YUV420P, 516, 618, 1) << std::endl;
    getcha();
    return 0;
}
CC = aarch64-linux-gnu-g++
TARGET = ffmpeg
SRC = main.cpp
OBJ = $(patsubst %.cpp, %.o, $(SRC))
OBJM = main.o

# LIBS += -L/usr/local/3party/ffmpeg/lib -lavcodec -lavutil
# INCS += -I/usr/local/3party/ffmpeg/include/
LIBS += -L/home/hjs/rk3568/3rparty/ffmpeg/lib -lavcodec -lavutil
INCS += -I/home/hjs/rk3568/3rparty/ffmpeg/include/

$(TARGET):$(OBJM)
	$(CC) -o $@ $^ $(LIBS)

%.o:%.cpp
	$(CC) -o $@ -c $< $(INCS)

.PHONY:clean
clean:
	rm -rf *.o $(TARGET)

其中LIBS和INCS的路径就是上面–prefix配置的库安装路径,make之后,将可执行文件复制到开发板上运行;复制方法可以用FileZilla(ftp)、scp命令、SSH或者U盘等;

scp ./ffmpeg root@192.168.10.150:/root/test

在这里插入图片描述
运行结果如图所示,说明交叉编译链和ffmpeg交叉环境有效。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值