当前位置: 首页 > 工具软件 > libav > 使用案例 >

记录:libav库的交叉编译

詹杰
2023-12-01

为了在板子上跑h264解码程序需要用到libavcodec, libavformat, libavutil三个函数库,这三个库的源码都可以在libav下找到,因此我下载了libav源码来交叉编译而不是ffmpeg源码,查了半天发现没有比较好的指导性的文章,libav的官网也没有这个文档。所以记录下交叉编译的过程,供大家参考。

1,首先下载libav的源码:

$ git clone https://github.com/libav/libav.git

2, 进入libav目录执行下面命令配置环境变量并生成Makefile文件:

./configure --disable-x86asm --enable-shared --extra-cflags="-fPIC"  --extra-ldflags="-lrt -lm -ldl" --arch=aarch64 --target-os=linux  --enable-cross-compile \
--cross-prefix=/home/test/x86_64-arago-linux/usr/bin/aarch64-linux-gnu- \
--sysroot=/home/test/sysroots/aarch64-linux/

下面对上面的参数进行说明:(也可以执行./configure -h 查看参数说明)

--enable-shared: 默认编译出来的库是*.a的静态库,如果想编*.so的动态库需要加这个选项。

--extra-cflags="-fPIC" : 添加而外的编译选项,编动态库需要加这个编译选项。

--extra-ldflags="-lrt -lm -ldl": 添加而外的链接选项。

--arch=aarch64: 机器的架构。可以打开configure查看,列出支持的架构如下:

ARCH_LIST="
    aarch64
    alpha
    arm
    avr32
    avr32_ap
    avr32_uc
    bfin
    ia64
    m68k
    mips
    mips64
    parisc
    ppc
    ppc64
    s390
    sh4
    sparc
    sparc64
    tilegx
    tilepro
    tomi
    x86
    x86_32
    x86_64
"

--target-os=linux: 目标机操作系统类型选择linux (查看configure可以看到Os的类型有:aix, android, haiku, sunos,

netbsd, openbsd/bitrig, dragonfly, freebsd, bsd/os, darwin, msvs*, mingw32*, mingw64*, win32, win64, cygwin*, linux,

*-dos, freedos, opendos, irix*, os/2*, gnu, kfreebsd, symbian, minix)

 

--enable-cross-compile: 因为是交叉编译所以必须enable。

--cross-prefix=/home/test/x86_64-arago-linux/usr/bin/aarch64-linux-gnu- :配置gcc编译器的前缀


--sysroot=/home/test/sysroots/aarch64-linux/:配置系统路径,就是stdio.h,stdlib.h等的位置。

3,执行make即可。

如果configure过程遇到问题,可以按提示去检查,可以通过./configure -h查看各个参数的说明。

特此记录。

 

后来发现,libav没有ffmpeg维护那么好,顺带记录下ffmpeg的交叉编译:

1, 下载ffmpeg源码地址:http://ffmpeg.org

2,执行configure, 选项基本一致
./configure \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=/home/test/x86_64-arago-linux/usr/bin/aarch64-linux-gnu- \
--enable-shared \
--disable-static \
--sysroot=/home/test/linux-devkit/sysroots/aarch64-linux/ \
--extra-cflags="-fPIC" \
--extra-ldflags="-lrt -lm -ldl" \
--arch=aarch64 \
--target-os=linux

3, 执行make

 

 

 

 

 

 

 

 

 类似资料: