- 交叉編譯的目標平臺是linux,不是android。從這裏將3288工具鏈clone下來。我clone到了**/home/yourname/arm-linux-gnueabihf**下面。
- 先編譯x264。由於設置了**–prefix=./libs所以要先在當前目錄下創建一個目錄libs**。make install後頭文件和庫文件會出現在該文件夾下。
./configure --prefix=./libs --enable-shared --enable-static --host=arm-linux --cross-prefix=/home/yourname/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- --disable-opencl --enable-pic
make
make install
- 將x264源代碼目錄下的libs目錄拷貝到ffmpeg源代碼目錄下。再編譯ffmpeg。
./configure --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --prefix=/home/yourname/ffmpeg/source/ffmpeg/libs --enable-cross-compile --cross-prefix=/home/yourname/arm-linux-gnueabihf/bin/arm-linux-gnueabihf- --target-os=linux --arch=arm --enable-shared --disable-static --enable-gpl --enable-pthreads --disable-vdpau --disable-vaapi --disable-vda --enable-libx264 --extra-cflags="-I/home/yourname/ffmpeg/source/x264/libs/include -fPIC -DPIC" --extra-ldflags=-L/home/yourname/ffmpeg/source/x264/libs/lib
make
make install
注意:由於配置時設置了**–enable-gpl**,所以用了這個庫的代碼是要開源的。不想開源,不要加這個選項。更多的配置信息請查看官方文檔。
- 然後寫一個小程序測試一下。
#include<libavutil/opt.h>
#include<libavcodec/avcodec.h>
#include<libavutil/common.h>
#include<libavutil/imgutils.h>
#include<libavutil/mathematics.h>
#include <libavutil/samplefmt.h>
void main()
{
avcodec_register_all();
}
~/arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc test.c -I/home/yourname/ffmpeg/source/ffmpeg/libs/include -L/home/yourname/ffmpeg/source/ffmpeg/libs/lib -lavformat -lavutil -lavcodec -lx264 -lswresample
- 如果能編過就可以把庫文件和在上一步編出來的可執行文件都拷貝到3288上進行測試。