记录:libav库的交叉编译
为了在板⼦上跑h264解码程序需要⽤到libavcodec, libavformat, libavutil三个函数库,这三个库的源码都可以在libav下到,因此我下载了libav源码来交叉编译⽽不是ffmpeg源码,查了半天发现没有⽐较好的指导性的⽂章,libav的官⽹也没有这个⽂档。所以记录下交叉编译的过程,供⼤家参考。
1,⾸先下载libav的源码:
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
gnu编译器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的交叉编译:
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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。