准备:
平台:Ubuntu16.04,由于Ubuntu16.04版本已不支持ia32-libs的软件包、而是使用了lib32ncurses5、lib32z1软件包做为替代,所以在Ubuntu16.04版本当中应该安装执行:
apt-get install lib32ncurses5
apt-get install lib32z1
编译器:arm-linux-gcc-4.3.2
安装:arm-linux-gcc-4.3.2
1.复制arm-linux-gcc-4.3.2.tgz到根目录下tmp文件夹里
2.解压命令tar xvzf arm-linux-gcc-4.3.2.tgz -C / #注意以上命令必须要有-C而且是大写,后边有个空格也要注意。
3.配置下编译环境路径,终端输入cd然后在控制台下输入 vim .bashrc 等一会出来文本编辑器后在文件最后(最后一行)加上下面代码。
export PATH=/usr/local/arm/4.3.2/bin:$PATH(这个路径应该自己arm_linux_gcc编译器的路径)
4.更新环境变量:source .bashrc
5.控制台输入: arm-linux-gcc -v 如果安装成功将会输出 arm-linux-gcc的版本号。
Myplayer移植:
需要提前移植libmad库
1.下载库文件libmad-0.15.1b.tar.gz并解压到 /usr/local/libmad
2.下载Mplayer的tar包,官方下载地址:http://www.mplayerhq.hu,选择MPlayer-1.0rc4.tar.bz2,10M左右
编译libmad
1.解压libmad-0.15.1b.tar.gz到/usr/local/libmad
2.进入解压得到的源码目录中:
root@ubuntu: /usr/local/libmad # cd libmad-0.15.1b
3.运行configure,生成makefile: (root@ubuntu: /usr/local/libmad/libmad-0.15.1b #这个是我的libmad文件夹所在地)
root@ubuntu: /usr/local/libmad/libmad-0.15.1b #./configure CC=arm-linux-gcc --host=arm-linux --disable-shared --disable- debugging --prefix=/usr/local/libmab/mad
4.修改makefile:
root@ubuntu: /usr/local/libmad/libmad-0.15.1b #vim Makefile
找到里面的“--fforce-mem”,然后删除保存退出即可
5.直接开始运行make编译源代码:
root@ubuntu: /usr/local/libmad/libmad-0.15.1b # make
6.make install
7.把生成的lib动态库考到开发板的lib库中。
8.OK! libmad移植成功。
交叉编译Mplayer:
1.解压MPlayer-1.0rc4.tar.bz2到/usr/local/mplayer
2.进入解压得到的源码目录中:
root@ubuntu: /usr/local/mplayer # cd MPlayer-1.0rc4
3.运行configure,生成makefile:
root@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4#
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --enable-fbdev --enable-static --disable-dvdread --disable-live --disable-mp3lib --enable-mad --disable-win32dll --disable-mencoder --disable-ivtv --disable-dvdnav --disable-dvdread-internal --disable-libdvdcss-internal --enable-libavcodec_a --prefix=/usr/local/Mplayer/mplayer 2>&1 | tee logfile
详细说明一下各个参数
--host-cc=gcc --cc=arm-linux-gcc --target=arm-linux //路径
--enable-fbdev //打开framebuffer支持.ARM开发板必须的
--enable-static //静态编译,编译成功后只需要将exe文件拷走即可以使用
--disable-dvdread --disable-dvdnav --disable-dvdread-internal //全部与DVD相关,无视即可
--disable-libdvdcss-internal //这个不加低版本mplayer也会出错
--disable-live //禁止流媒体,我们用不到
--disable-mp3lib --enable-mad //关闭默认的MP3解码库,使用我们刚才编译的libmad
--disable-win32dll //禁用win32动态链接库支持
--disable-mencoder //交叉编译mencoder会有问题,而且arm上不需要这个功能
--disable-ivtv //如果不加会出现ivtv文件产生的错误
--enable-libavcodec_a //启用静态的libavcodec解码
4.修改Makefile.
修改MPlayer-1.0rc4/libmpeg2/motion_comp_arm_s.S文件
root@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# vim /libmepg2/motion_comp_arm_s.S
在最前加入:
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
5.直接开始运行make编译源代码:
root@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# make
6.Make完成后,出现mplyer
root@ubuntu: /usr/local/mplayer/ MPlayer-1.0rc4# ls
放到开发板上运行:
把mplyer放入u盘中,然后挂载u盘,接着把mplyer考到开发板的opt目录下,没有opt目录的自己建一个
再放入一个mp4文件在opt下然后运行mplayer -vo fbdev test.mp4
OK,mplayer已经交叉编译成功,放在板子上正常运行.
运行命令还可以为:
mplayer -fs -zoom -x 320 -y 240 -ac mad -nosound -cache 4096 /opt/t2.mp4 -loop 0
参数解释:
-zoom -x 320 -y 240 全屏
-ac mad 是必须,表示强制用libmad解码.
-nosound 取消音频
-cache 4096 缓存设置为4M
-loop 循环播放,为0则无限循环播放,!0则有限播放