1. 交叉编译yasm
进入yasm源码目录
make distclean //先把之前的编译,配置文件清除
export CC=arm-linux-gnueabihf-gcc//可通过"./configure --help"查看到用环境变量CC指定交叉编译器./configure --prefix=/usr/local/ffmpeg_arm/xlibs --host=arm // "--prefix"用于指定安装目录, "--host"用于指定目标平台.
make && make install //完成后, 生成在"/usr/local/ffmpeg_arm/xlibs/"目录里
2. 交叉编译libx264
进入x264源码目录
make distclean
./configure --host=arm-linux--cross-prefix=arm-linux-gnueabihf---extra-cflags="-I /usr/local/ffmpeg_arm/xlibs/include"--extra-ldflags="-L /usr/local/ffmpeg_arm/xlibs/lib"--prefix=/usr/local/ffmpeg_arm/xlibs --enable-shared// 相关的配置项可通过"./configure --help"查看
make && make install //完成后, 生成在"/usr/local/ffmpeg_arm/xlibs/"目录里
3. 交叉编译libx265
参考: http://blog.csdn.net/wanglx_/article/details/50786307
进入x265源码目录里的build/linux目录后操作:
mkdir arm-linux //创建子目录
cd arm-linux
vim toolchain.cmake //创建文件,并加入下面内容:
set(CROSS_COMPILE_ARM 1)
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR Arm)
set(CMAKE_C_COMPILER arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++)
# 交叉编译器的路径SET(CMAKE_FIND_ROOT_PATH /disk3/myAm4379/arm4.7/bin)
vim make-Makefiles.bash //创建文件并加入下面内容:
#!/bin/bash # Run this from within a bash shell
cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -G "Unix Makefiles" ../../source && ccmake ../../source
./make-Makefiles.bash
在弹出的界面里修改以下项:
CMAKE_INSTALL_PREFIX /usr/local/ffmpeg_arm/xlibs
YASM_EXECUTABLE /usr/local/ffmpeg_arm/xlibs
修改完成后,按'c'键后再按'g'键保存退出
修改下面三个文件:
vim encoder/CMakeFiles/encoder.dir/flags.make
vim common/CMakeFiles/common.dir/flags.make
vim CMakeFiles/cli.dir/flags.make
都是在"CXX_FLAGS"语句最后加上 -fPIC, 否则会有"can not be used when making a shared object; recompile with -fPIC"的报错
修改完成后,执行make && make install 进行编译
如发生错误:arm-linux-gnueabihf-g++: error: unrecognized argument in option ‘-march=i686
则把arm-linux整个目录删除重新做一次应就可以了。
以上操作完成后,x265的库就生成在/usr/local/ffmpeg_arm/xlibs目录里
4. 交叉编译ffmpeg
进入ffmpeg3.0源码目录里操作:
make distclean
export PKG_CONFIG_PATH=/usr/local/ffmpeg_arm/xlibs/lib/pkgconfig/./configure --disable-debug--enable-libx264--enable-libx265--enable-gpl--enable-shared--enable-cross-compile--arch=armv7a --cross-prefix=arm-linux-gnueabihf---prefix=/usr/local/ffmpeg_arm/xlibs --extra-cflags="-I /usr/local/ffmpeg_arm/xlibs/include -fPIC"--extra-ldflags="-L /usr/local/ffmpeg_arm/xlibs/lib"--target-os=linux --pkg-config-flags=--static
make && make install