GEC6818开发日记03 --- madplay与mplayer的移植

简述

         madplay是一款开源的mp3播放器,mplayer是一款开源的多媒体播放器。为了让终端支持播放音频和视频,需要对madplay与mplayer进行移植。

移植madplay

资源 链接
音乐播放器的应用程序 madplay-0.15.2b.tar.gz
mp3解码的库(编译后或生成*.so) libmad-0.15.1b.tar.gz
获取mp3文件的头信息 libid3tag-0.15.1b.tar.gz
文件解压库 zlib 1.2.13
  1. 将文件拷贝到 Linux 并解压
    解压后的文件

  2. 创建一个编译后的文件的安装目录
    安装目录

  3. 编译安装 zlib

    • 配置编译好的库的安装路径
      $ cd zlib-1.2.13/
      $ ./configure --prefix=../_install/
      # 配置生成库的安装路径,这会生成 Makefile 文件
      
    • 修改Makefile
      15行: CC=arm-linux-gcc
      35行: AR=arm-linux-ar
      37行: RANLIB=arm-linux-ranlib
      
    • 编译 zlib
      $ make clean
      $ make
      

            如果编译报错, 那么就把 Makefile 文件里所有的 gccarm-linux-gcc 替换, 保存然后重新编译

    • 生成了两个动态库, 一个静态库
      生成库
    • 安装 zlib
      $ make install
      $ cd ../_install
      $ cd lib
      $ ls -l
      
      安装库
  4. 编译安装 libid3tag

    • libid3tag 库进行配置
      $ cd libid3tag-0.15.1b/
      $ ./configure CC=arm-linux-gcc --prefix=/home/link/madplay/_install --host=arm-linux --disable-shared CPPFLAGS=-I/home/link/madplay/_install/include LDFLAGS=-L/home/link/madplay/_install/lib
      

      这里的路径全部用的绝对路径

      • zlib 库头文件的路径
        -I/home/link/madplay/_install/include
      • zlib 库库文件的路径
        -L/home/link/madplay/_install/lib
    • 编译安装 libid3tag
      $ make
      $ make install
      
      libid3tag库
  5. 编译安装 libmad

    • libmad 库进行配置
      $ cd libmad-0.15.1b/
      $ ./configure CC=arm-linux-gcc --prefix=/home/link/madplay/_install --host=arm-linux --disable-shared CPPFLAGS=-I/home/link/madplay/_install/include LDFLAGS=-L/home/link/madplay/_install/lib
      
    • 编译安装
      $ make && make install
      

      编译出现错误的话修改下 Makefile 的 CFLAGS 的参数为以下(将 -force-mem 删掉)

      CFLAGS = -Wall -g -O -fforce-mem -fforce-addr -fthread-jumps -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fregmove -fschedule-insns2 -fstrength-reduce
      
      libmad
  6. 编码 madplay

    • 配置 madplay 源码
      $ cd madplay-0.15.2b/
      $ ./configure CC=arm-linux-gcc --prefix=/home/link/madplay/_install --host=arm-linux --disable-shared --enable-static CPPFLAGS=-I/home/link/madplay/_install/include LDFLAGS=-L/home/link/madplay/_install/lib
      
    • 编译安装 madplay: 动态链接
      $ make && make install
      
      madplay
  7. madplay 下载到 GEC6818 开发板进行运行

    • 下载到开发板
      下载到开发板
    • 将编译好的 libz.so 动态共享库下载到开发板的 /lib 目录下
      动态共享库
      [root@GEC6818 /lib]$ rx libz.so.1.2.13	# 接收文件
      [root@GEC6818 /lib]$ chmod 777 libz.so.1.2.13	# 赋予权限
      [root@GEC6818 /lib]$ ln -s libz.so.1.2.12 libz.so.1		# 创建链接文件
      
    • 最后, 由于是动态链接, 所以还需要把许多的库文件传进开发板, 否则会提示很多库文件找不到, 所以可以选择做成静态链接的程序.
      • 拷贝 make 的最后一个 编译命令, 应该在倒数第三行.
        $ make clean
        $ make
        
        命令
        • 在命令最后加上 -staticlz, 然后运行
          arm-linux-gcc -Wall -g -O2 -o madplay madplay.o getopt.o getopt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_oss.o -L/home/link/madplay/_install/lib /home/link/madplay/_install/lib/libmad.a /home/link/madplay/_install/lib/libid3tag.a -lz -lm -static
        • 当前目录会生成一个 madplay 二进制文件, 查看文件属性
          静态连接二进制文件

移植mplayer

资源 链接
多媒体播放器的应用程序 MPlayer-1.0rc4.tar.bz2
解码的库(编译后或生成*.so) libmad-0.15.1b.tar.gz

一定要注意自己的编译器版本支不支持 mplayer

  1. 编译安装 libmad 库, 参考上面, 不再赘述, 也可以直接使用之前安装好的
  2. MPlayer-1.0rc4.tar.gz 解压到统一的移植准备目录下
    $ tar -zxvf MPlayer-1.0rc4.tar.gz
    mplayer
  3. 配置生成 mplayer 以及生成 Makefile
    $ cd MPlayer-1.0rc4/
    $ ./configure --prefix=/home/link/Porting_software/_install  --cc=arm-linux-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
    $ make -j8	#8线程执行, 因为执行时间很长, 后面的数字写自己机器内核数
    $ make install
    #记得要改安装路径以及编译器, 最后有-enble-static, 所以是静态链接
    
    mplayer
  4. mplayer 下载到开发板中
    $ rx /usr/bin/mplayer
    $ chmod 777 mplayer
    
    成功

总结

        总的来说, 还是做静态链接库比较省事, 但是比较大.
编译器版本太高
这里是因为当前版本的 mplayer 版本太低, 不能适配 5.4.0 的编译器 — 换高版本 mplayer 或降低编译器版本.

猜你喜欢

转载自blog.csdn.net/mumuynsi/article/details/127817301
今日推荐