Am335x-kernel3.14移植madplay

1.下载

madplay_0.15.2b.orig.tar.gz:  

http://download.csdn.net/detail/qin1174586290/6364773

http://madplay.sourcearchive.com/

libmad-0.15.1b.tar.gz:  

http://download.csdn.net/detail/qin1174586290/6364767

http://www.linuxfromscratch.org/blfs/view/6.3/multimedia/libmad.html

libid3tag-0.15.1b.tar.gz:  

http://download.csdn.net/detail/qin1174586290/6364763

 http://www.zlib.net/

zlib-1.2.8.tar.gz:  

http://download.csdn.net/detail/qin1174586290/6364757

 http://www.zlib.net/

 

2. 创建一个安装目录

cd  /work/projects/practices/335x/kernel_3.14.43/transplant/madplay

mkdir  /work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install

 

3. zlib-1.1.4 库

进入 zlib-1.1.4目录

cd  ../zlib-1.1.4

配置:

./configure --prefix= /work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install

修改

vi Makefile

 

CC=arm-linux-gnueabihf-gcc

LDSHARED=arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map

AR=arm-linux-gnueabihf-ar rc

RANLIB=arm-linux-gnueabihf-ranlib

CFLAGS=-O3 -DHAVE_UNISTD_H -DUSE_MMAP -fPIC         不加下一步可能会出错

安装

make clean;make && make install

  

4. libid3tag-0.15.1b 库

进入libid3tag-0.15.1b 目录

cd ../libid3tag-0.15.1b

配置:

./configure --prefix= /work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install --host=arm-linux–gnueabihf CPPFLAGS=-I/work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install/include LDFLAGS=-L/work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install/lib

 

安装:make

编译时会发生如下错误:

install/lib/libz.a: could not read symbols: Bad value

collect2: error: ld returned 1 exit status

这时要重新编译上一个库zlib-1.1.4

回到上个zlib-1.1.4目录中

cd ../zlib-1.1.4/

vi Makefile

CFLAGS=-O3 -DHAVE_UNISTD_H -DUSE_MMAP -fPIC (就是在最后添加-fPIC选项)

 

重新编译安装

make clean;make && make install

 

5. libmad-0.15.1b 库

进入libmad-0.15.1b 目录

cd ../libmad-0.15.1b

配置

./configure --prefix= /work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install --host=arm-linux-gnueabihf CPPFLAGS=-I/work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install/include LDFLAGS=-L /work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install/lib --enable-speed

 

修改:

vi Makefile

将第129行中的  -fforce-mem  删除

否则,编译时会发生如下错误:

arm-linux-gnueabihf-gcc: error: unrecognized command line option '-fforce-mem'

 

安装:

make clean;make && make install

  

如果发生下面的错误   配置时需添加  --enable-speed

Assembler messages:ccrtagSq.s:2696: Error: selected processor does not support Thumb mode `rsc r0,r0,#0'

ccrtagSq.s:2901: Error: selected processor does not support Thumb mode `rsc r8,r8,#0'

ccrtagSq.s:3580: Error: selected processor does not support Thumb mode `rsc r0,r0,#0'

ccrtagSq.s:3782: Error: selected processor does not support Thumb mode `rsc r8,r8,#0'

Makefile:383: recipe for target 'synth.lo' failed

make[2]: *** [synth.lo] Error 1

 

6. madplay-0.15.2b

进入 madplay-0.15.2b 目录

cd ../madplay-0.15.2b

配置:

./configure --prefix=/work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install --host=arm-linux-gnueabihf CPPFLAGS=-I/work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install/include LDFLAGS=-L/work/projects/practices/335x/kernel_3.14.43/transplant/madplay /install/lib

 

安装:

make clean;make && make install

 

 

 

 

7.拷贝

注:最后生成的静态链接的程序是在madplay-0.15.2b 目录下的madpaly-s,并非在安装目录install/bin/下

动态链接的文件在 install/bin/            

将库文件install/lib 中libid3tag.so  libid3tag.so.0  libid3tag.so.0.3.0  libmad.so  libmad.so.0  libmad.so.0.2.1

复制到目标板lib目录中 (复制时要注意链接文件,cp命令要加上-rfa)。

注:网上说拷贝到/usr/sbin  经测试发现会出现找不到库

madplay: error while loading shared libraries: libmad.so.0: cannot open shared object file: No such file or directory

保险起见 可以打包进文件系统,然后解压

最后在播放测试时报错,如下:

audio: /dev/dsp: No such file or directory

重配置内核

<*>Device Drivers--->

     <*>sound card support --->

           <*>advanced linux soune architecture --> 

                       <*>OSS Mixer API

                       <*>OSS PCM (digital audio) API

编译运行

此时播放测试又报错,如下:

ASoC: unmatched rate symmetry: 8000 – 44100

output: ioctl(SNDCTL_DSP_SPEED): Invalid argument

 

这要修改内核驱动代码

打开\sound\soc\davinci\davinci-mcasp.c文件

修改:#define DAVINCI_MCASP_RATES        SNDRV_PCM_RATE_8000_192000

          #define DAVINCI_MCASP_RATES        SNDRV_PCM_RATE_44100

保存重新编译内核

 

8.测试

madplay  why-would-I-ever.mp3

 

 

网上说配置的时候加上     --disable-shared --enable-static     可以静态编译 测试未成功

在最后编译 madplay-0.15.2b 运行下面的

arm-linux-gnueabihf-gcc -Wall -O2 -fomit-frame-pointer -o madplay-s 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/work/projects/practices/madplay/install/lib /work/projects/practices/madplay/install/lib/libmad.a /work/projects/practices/madplay/install/lib/libid3tag.a -lz -lm –static

可以生成一个含有静态库的madplay 测试未成功

 

参考:     http://www.openedv.com/thread-70557-1-1.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值