交叉编译ffmpeg并生成ffplay
1.交叉编译SDL库
a. ./configure --prefix=/usr/local/sdl-arm --disable-video-qtopia --disable-video-dummy --disable-video-fbcon --disable-video-dga --disable-arts --disable-esd --disable-alsa --disable-cdrom --disable-video-x11 --disable-nasm --target=arm-linux --host=arm-linux --enable-video-fbcon --disable-video-directfb
b. make
c. make install
2.交叉编译ffmpeg
a. ./configure --enable-cross-compile --target-os=linux --cross-prefix=arm-linux- --cc=arm-linux-gcc --enable-shared --arch=arm --enable-gpl --prefix=/usr/local/ffmpeg-arm --enable-ffplay --extra-cflags=-I/usr/local/sdl-arm/include/SDL --extra-ldflags=-L/usr/local/sdl-arm/lib --extra-libs=-lSDL
注:由于configure后生成的config.mak文件中CONFIG_FFPLAY=yes,HAVE_SDL=yes等都是被注释掉的,所以需要手动修改config.mak文件,将CONFIG_FFPLAY=yes HAVE_SDL=yes的注释去掉,同时必须手动指定SDL的头文件,库路径,并且-lSDL来链接
需要生成debug 符号时增加--disable-optimizations --disable-mmx --disable-stripping
b.make
c.make install
--prefix=PEWFIX
'--prefix'是最常用的选项.制作出的'Makefile'会查看随此选项传递的参数,当一个包在安装时可以彻底的重新安置他的结构独立部分. 举一个例子,当安装一个包,例如说Emacs,下面的命令将会使Emacs Lisp file被安装到"/opt/gnu/share":
$ ./configure --prefix=/opt/gnu
--host=HOST
指定软件运行的系统平台.如果没有指定,将会运行`config.guess'来检测.
--target=GARGET
指定软件面向(target to)的系统平台.这主要在程序语言工具如编译器和汇编器上下文中起作用.如果没有指定,默认将使用'--host'选项的值.
--disable-FEATURE
一些软件包可以选择这个选项来提供为大型选项的编译时配置,例如使用Kerberos认证系统或者一个实验性的编译器最优配置.如果默认是提供这些特性,可以使用'--disable-FEATURE'来禁用它,这里'FEATURE'是特性的名字.例如:
$ ./configure --disable-gui
-enable-FEATURE[=ARG]
相反的,一些软件包可能提供了一些默认被禁止的特性,可以使用'--enable-FEATURE'来起用它.这里'FEATURE'是特性的名字.一个特性可能会接受一个可选的参数.例如:
$ ./configure --enable-buffers=128
`--enable-FEATURE=no'与上面提到的'--disable-FEATURE'是同义的.
--cross-prefix=PREFIX 为编译工具指定路径 | use PREFIX for compilation tools []
--cross-compile 假定使用了交叉编译 | assume a cross-compiler is used
--cc=CC 指定使用何种C编译器(默认gcc)use C compiler CC [gcc]
--extra-cflags=ECFLAGS 添加ECFLAGS到CFLAGS | add ECFLAGS to CFLAGS []
--extra-ldflags=ELDFLAGS 添加ELDFLAGS到LDFLAGS(默认-Wl,--as-needed)| add ELDFLAGS to LDFLAGS [ -Wl,--as-needed]
--extra-libs=ELIBS 添加ELIBS | add ELIBS []
--arch=ARCH 选择机器架构(默认x86)select architecture [x86]
但是:
交叉编译ffmpeg,要把x264加进来,首先configure:
#./configure --prefix=/usr/local/ --cross-compile --arch=libavcodec/armv4l/ --cross-prefix=/usr/local/arm/2.95.3/bin/arm-linux- --cc=gcc --enable-static --disable-ipv6 --enable-libx264 --enable-gpl --enable-pthreads --disable-ffserver --disable-ffplay --target-os=linux --disable-network --disable-opts
有错误,如:
ERROR: x264 not found 你在configure时把libx264库加上就可以了:--extra-libs=/usr/local/lib/ 此路径是你的x264的安装路径。
如果出现如下错误,
/usr/local/arm/2.95.3/bin/arm-linux-gcc is unable to create an executable file.
C compiler test failed.
会发现只要去掉--extra-libs=/usr/local/lib/后,这个错误就没了,但是有ERROR: x264 not found 那个错误,郁闷,怎么解决呢?
......
我又重新编译安装了一下x264,把它的prefix由--prefix=/usr/local改到交叉编译器的目录下,即--prefix=/usr/local /arm/2.95.3/arm-linux/后configure就能够通过了。
参照以上网上的方法:
这里的问题还是没有解决!暂且不添加x264库了!!!
阅读(1912) | 评论(0) | 转发(0) |