本文介绍关于 Mplayer 移植前的编译过程
环境:Red Hat Enterprise Linux 4
1) 交叉编译 libmad
下载 libmad 源码包 (libmad-0.15.1b.tar.gz)
进入 libmad 目录,输入以下命令:
$ ./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/usr/local/arm/ CC=arm-linux-gcc
$ make
$ make install
此时会在 /usr/local/arm/ 目录下生成 /include /lib 两个目录
可以 ./configure --help 查询各个参数的用法,这里就不一一介绍了.
libmad 编译到此完成。按照此过程一般不会出现错误。
2) 编译 Mplayer
下载 Mplayer 源码包 (MPlayer-1.0rc2.tar.bz2)
进入 Mplayer 目录,输入以下命令:
$ ./configure --cc=arm-linux-gcc --target=arm-linux --enable-static \
--prefix=/opt/mplayer --disable-win32dll --disable-dvdread \
--enable-fbdev --disable-mencoder --disable-live --disable-mp3lib \
--enable-mad --enable-libavcodec_a --language=zh_CN \
--disable-armv5te --disable-armv6 \
--with-extraincdir=/usr/local/arm/include \
--with-extralibdir=/usr/local/arm/lib
--prefix指定安装路径,这里可以不需要的
--enable是使能
--disable是禁止
--enable-static是设定静态连接
--enable-mad (为了在编译和链接的时候找的到头文件和库文件需要在CONFIGURE选项里加入以下两 句,不然在编译的时候会找不到头文件,在链接的时候 –lmad 找不到mad的库文件)
--with-extraincdir=/usr/local/arm/3.3.2/lib/include(这个指明 mad.h 这个文件所在的路径)
--with-extralibdir=/usr/local/arm/3.3.2/lib/lib(这个指明libmad相关链接库所在的路径)
$ make
此时我出现了一下错误:
arm-linux-gcc -I. -DCODECS2HTML codec-cfg.c -o codec-cfg
./codec-cfg ./etc/codecs.conf > codecs.conf.h
/bin/sh: ./codec-cfg: cannot execute binary file
make: *** [codecs.conf.h] 错误 126
分析原因应该是生成的 codec-cfg 不能执行
网上有个帖子是这样解决的(我试了此方法也解决了自己的问题):
codec-cfg这个可执行文件是最先编译产生的一个文件,这个文件是存在的,怎么会执行不了呢?于是手动执行了一下,系统提示“cannot
execute binary
file”,突然想起来,codec-cfg是按跨平台方式编译的,产生的是arm的代码,当然不能在x86上执行了,那就先用不用跨平台编译的方式,先
把mplayer编译成x86的代码,于是重新配置,简单的 ./configure,
make,然后将生成的codec-cfg改名为codec-cfg.x86。然后再按跨平台方式配置,编译,等编译器出现错误停止编译时,将
codec-cfg.x86该名为codec-cfg,再make
(此贴出自何人本人也无从得知,如果主人看到,请立即联系本人,在此谢谢此高人前辈)
$ make
然后本人就得到了可执行的 mplayer 文件
哈哈,保存,备用。
阅读(1181) | 评论(0) | 转发(0) |