【嵌入式】---交叉编译 移植 Mplayer 到 ARM开发板

一、基本信息

1、移植环境

①:ubuntu16.04

②:iMX6Q开发板

2、移植所需软件源码

①:libmad libmad 下载

②:mplayer mplayer下载

③:百度网盘下载:

链接:https://pan.baidu.com/s/1KM3VNY4RWhBKFsN4me8shg
提取码:rds1

二、移植Libmad

①:版本选择:libmad-0.15.1b.tar.gz

②:libmad准备工作

解压 libmad-0.15.1b.tar.gz

tar xvf libmad-0.15.1b.tar.gz 

解压之后进入libmad-0.15.1b

cd libmad-0.15.1b

③:配置libmad

./configure  --host=arm-linux-gnueabihf --disable-debugging --enable-static --enable-shared --enable-speed --prefix=/home/icedustpan/mplayer/libmad

或者使用icedustpan.sh脚本

#!/bin/sh
./configure \
	--host=arm-linux-gnueabihf \
	--disable-debugging \
	--enable-static \
	--enable-shared \
	--enable-speed \
	--prefix=/home/icedustpan/mplayer/libmad
exit

在这里插入图片描述

④:编译libmad

make

出现下面的报错
在这里插入图片描述

(sed -e '1s|.*|/*|' -e '1b' -e '$s|.*| */|' -e '$b'  \
	-e 's/^.*/ *&/' ./COPYRIGHT; echo;  \
echo "# ifdef __cplusplus";  \
echo 'extern "C" {';  \
echo "# endif"; echo;  \
if [ ".-DFPM_ARM" != "." ]; then  \
	echo ".-DFPM_ARM" | sed -e 's|^\.-D|# define |'; echo;  \
fi;  \
sed -ne 's/^# *define  *\(HAVE_.*_ASM\).*/# define \1/p'  \
	config.h; echo;  \
sed -ne 's/^# *define  *OPT_\(SPEED\|ACCURACY\).*/# define OPT_\1/p'  \
	config.h; echo;  \
sed -ne 's/^# *define  *\(SIZEOF_.*\)/# define \1/p'  \
	config.h; echo;  \
for header in version.h fixed.h bit.h timer.h stream.h frame.h synth.h decoder.h; do  \
	echo;  \
	sed -n -f ./mad.h.sed ./$header;  \
done; echo;  \
echo "# ifdef __cplusplus";  \
echo '}';  \
echo "# endif") >mad.h
make  all-recursive
make[1]: Entering directory '/home/avdisplay/software/libmad-0.15.1b'
make[2]: Entering directory '/home/avdisplay/software/libmad-0.15.1b'
if /bin/bash ./libtool --mode=compile arm-linux-gnueabihf-gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_ARM -DASO_INTERLEAVE1 -DASO_IMDCT    -Wall -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -fstrength-reduce -fomit-frame-pointer -MT version.lo -MD -MP -MF ".deps/version.Tpo" -c -o version.lo version.c; \
then mv -f ".deps/version.Tpo" ".deps/version.Plo"; else rm -f ".deps/version.Tpo"; exit 1; fi
mkdir .libs
 arm-linux-gnueabihf-gcc -DHAVE_CONFIG_H -I. -I. -I. -DFPM_ARM -DASO_INTERLEAVE1 -DASO_IMDCT -Wall -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -fstrength-reduce -fomit-frame-pointer -MT version.lo -MD -MP -MF .deps/version.Tpo -c version.c  -fPIC -DPIC -o .libs/version.o
arm-linux-gnueabihf-gcc: error: unrecognized command line option '-fforce-mem'
Makefile:383: recipe for target 'version.lo' failed
make[2]: *** [version.lo] Error 1
make[2]: Leaving directory '/home/avdisplay/software/libmad-0.15.1b'
Makefile:424: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/avdisplay/software/libmad-0.15.1b'
Makefile:249: recipe for target 'all' failed
make: *** [all] Error 2

arm交叉编译不支持 -fforce-mem 这个选项

解决方法:修改编译选项

vim Makefile

在129 行 删除 -fforce-mem 这个选项
在这里插入图片描述
修改前

CFLAGS = -Wall -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -fstrength-reduce -fomit-frame-pointer

修改后

CFLAGS = -Wall -O -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -fstrength-reduce -fomit-frame-pointer

再次执行make编译

这次没有报错了,编译成功。

在这里插入图片描述

⑤:安装libmad

make install

在这里插入图片描述

成功安装ibmad

三、安装Alsa-lib

①:版本选选择:alsa-lib-1.0.22.tar.bz2

②:Alsa-lib准备工作

解压alsa-lib-1.0.22.tar.bz2

tar xvf alsa-lib-1.0.22.tar.bz2

解压之后进入alsa-lib-1.0.22

cd alsa-lib-1.0.22

③:配置Alsa-lib

创建配置脚本

vim icedustpan.sh

填写以下内容

#!/bin/sh
./configure \
	--host=arm-linux-gnueabihf \
	CC=arm-linux-gnueabihf-gcc \
	--enable-shared \
	--disable-python \
	--prefix=/home/icedustpan/mplayer/alsalib
exit

赋予权限

chmod 777 icedustpan.sh

运行配置

./icedustpan.sh

在这里插入图片描述

④:编译Alsa-lib

make

在这里插入图片描述

⑤:安装Alsa-lib

make install

在这里插入图片描述

四、移植Mplayer

①:版本选择:MPlayer-1.0rc2.tar.bz2

②:mplayer准备工作

解压 MPlayer-1.0rc2.tar.bz2

tar xvf MPlayer-1.0rc2.tar.bz2

解压之后进入MPlayer-1.0rc2

cd MPlayer-1.0rc2

③:配置mplayer

./configure --prefix=/home/avdisplay/mplayer  --cc=arm-linux-gnueabihf-gcc --disable-gui  --target=arm-linux  --host-cc=gcc  --disable-freetype  --enable-fbdev  --disable-mencoder   --disable-sdl --disable-live  --disable-dvdread  --disable-libdvdcss-internal --disable-x11 --enable-cross-compile  --disable-dvdnav --disable-dvdread-internal --disable-jpeg --disable-tga --disable-pnm --disable-tv --disable-ivtv --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static

在这里插入图片描述
接下来打开config.mak

vim config.mak

配置 INSTALLSTRIP,删掉后面的 -s
在这里插入图片描述

④:编译mplayer

make

⑤:mplayer可执行文件

在这里插入图片描述
这时候我们把这个编译得到的 mplayer可执行文件 拷贝到开发板就可以用了
./mplayer xxx.mp3

  • 5
    点赞
  • 16
    收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页
评论 3

打赏作者

秋知叶i

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值