天天看點

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