linux 编译底层库,Ubuntu下编译Ffmpeg静态库

在开发一款android平台下的视频播放器,底层解码选择用开源解码库Ffmpeg,需要编译生成静态库。

编译的环境:

ubuntu 12.04 64bit

android-ndk-r9d linux 64bit,下载地址:android ndk下载地址

ffmpeg 0.6.7,下载地址:Ffmpeg 0.6.7 源码下载地址

编译的详细流程如下:

1.下载好android ndk后,将压缩包解压在某一目录下,例如楼主解压在了/home/zk/ndk路径下了,所以楼主的android ndk根目录的绝对路径就是/home/zk/ndk/android-ndk-r9d.

2.同1,楼主在/home/zk/目录下又新建了一个Ffmpeg文件夹,并将下载好的ffmpeg-0.6.7.tar.gz解压到了此处,所以ffmpeg的根目录绝对路径就是/home/zk/Ffmpeg/ffmpeg-0.6.7.

3.在ffmpeg的根目录下新建一个config.sh文件,将如下内容复制到其中(如下内容是ndk的路径和一些ffmpeg编译配置选项,需要大家根据自己的ndk实际路径进行修改,而ffmpeg编译的配置选项大家可以从网上搜索,根据自己需求更改相应参数):

#!/bin/sh

export TMPDIR="/tmp/"

export NDKROOT="/home/zk/ndk/android-ndk-r9d"

PREBUILT=$NDKROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64

./configure --target-os=linux \

--arch=arm \

--cpu=armv7-a \

--enable-cross-compile \

--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \

--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \

--nm=$PREBUILT/bin/arm-linux-androideabi-nm \

--extra-cflags="-fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp -I$NDKROOT/platforms/android-9/arch-arm/usr/include" \

--enable-asm \

--disable-yasm \

--enable-static \

--disable-shared \

--enable-small \

--enable-gpl \

--enable-version3 \

--enable-nonfree \

--enable-neon \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffserver \

--disable-ffprobe \

--prefix=/home/ffmpeg-android-bin \

--extra-ldflags="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x -Wl,-rpath-link=$NDKROOT/platforms/android-9/arch-arm/usr/lib -L$NDKROOT/platforms/android-9/arch-arm/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-linux-androideabi/4.6/crtbegin.o $PREBUILT/lib/gcc/arm-linux-androideabi/4.6/crtend.o -lc -lm -ldl"

4.终端下进入ffmpeg根目录路径,即新建的config.sh文件所在的目录下,给config.sh文件添加可执行权限:

chmod +x config.sh

然后执行如下命令:

./config.sh执行完该命令后,会发现生成了config.h 和config.mak文件,这两个文件是之后执行make命令编译时,makefile中所需要的环境变量以及配置选项。

5.最后在终端执行make执行完后会在ffmpeg根目录下的libavcodec、libavdevice、libavformat、libavutil、libswscale文件夹下有相应的.a静态库文件生成~

你可能感兴趣的:(linux,编译底层库)