一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

mp3播放器madplay 移植過程詳解

 renhl252 2015-07-10

1、環(huán)境

linux操作系統(tǒng):fedora 10;

交叉編譯器: arm-linux-gcc-4.3.3

目前madplay的官方網(wǎng)站是http://www./products/mad/,透過該網(wǎng)
站的介紹可以得知, 它還需要libmad 和libid3tag 兩個(gè)庫, 從該網(wǎng)站找到下載
連接http:///project/showfiles.php?group_id=12349
這樣我們就得到了移植 madplay  所需要的關(guān)鍵的三個(gè)文件:
madplay-0.15.2b.tar.gz
libmad-0.15.1b.tar.gz
libid3tag-0.15.1b.tar.gz

2、手動編譯

#mkdir madplay
#cd madplay
#mkdir tarball src-x86 src-arm target-x86 target-arm
目錄說明:
tarball 目錄用來存放所有的源代碼包
src-x86  目錄用來存放X86 版本的所有源代碼文件
src-arm  目錄用來存放ARM 版本的所有源代碼文件
target-x86 目錄是X86 版本的安裝目錄
target-arm  目錄是ARM  版本的安裝目錄

接下來把從網(wǎng)上下載到的源代碼包放入 tarball  目錄:

解壓源代碼包
#cd tarball
#for f in $(ls *.tar.gz); do tar xvzf $f –C ../src-x86; done

編譯madplay  所依賴的庫文件
a) libid3tag
#cd ../src-x86/libid3tag-0.15.1b
#./configure --prefix=/opt/GTStudio/GT2440/madplay/target-x86
#make
#make install
 
b) libmad
#cd ../libmad-0.15.1b
#./configure --prefix=/opt/GTStudio/GT2440/madplay/target-x86
#make
#make install
以上過程完畢,將在 target-x86  目錄出現(xiàn)編譯madplay 所依賴的庫文件和頭
文件。

編譯安裝madplay
 如果我們還是像剛才那樣配置編譯選項(xiàng):
 #cd madplay-0.15.2b
 #./configure --prefix= /opt/GTStudio/GT2440/madplay/target-x86

提示我們在配置 madplay  之前要先安裝libmad,因?yàn)槲覀冎耙呀?jīng)編譯并安
裝了依賴庫,根據(jù)提示我們要設(shè)置CPPFLAGS  環(huán)境變量,采用如下參數(shù)重新配
置:
  #./configure --prefix=/opt/GTStudio/GT2440/madplay/target-x86
CPPFLAGS=-I//opt/GTStudio/GT2440/madplay/target-x86/include

提示告訴我們還要設(shè)置 LDFLAGS 環(huán)境變量,因此再次修改配置參數(shù)如下:
 #./configure --prefix=/opt/GTStudio/GT2440/madplay/target-x86
CPPFLAGS=-I/opt/GTStudio/GT2440/madplay/target-x86/include
LDFLAGS=-L/opt/GTStudio/GT2440/madplay/target-x86/lib

這說明配置已經(jīng)成功,生成了編譯所需要的 Makefile 文件,輸入一下命令
開始編譯安裝:
 #make
 #make install
 執(zhí)行完畢, 可執(zhí)行文件將被安裝在我們指定的目錄
/opt/GTStudio/GT2440/madplay/target-x86 目錄中:
 #ls target-x86/bin
 abxtest madplay
其中abxtest  是附加生成的測試程序,不必理會。

測試PC 版的madplay
 拷貝一首mp3 文件到madplay  所在的目錄,執(zhí)行:
 #./madplay test.mp3
如果你的聲卡已經(jīng)正確安裝,就可以聽到mp3 的聲音了。

3、構(gòu)建編譯腳本build-x86

[root@HeBi madplay]# cat build-x86
#!/bin/sh

MADPLAY_DIR=$PWD
SRC_DIR=src-x86
TARGET_DIR=$MADPLAY_DIR/target-x86

#tar xvzf ./tarball/libid3tag-0.15.1b.tar.gz -C $SRC_DIR 
#tar xvzf ./tarball/libmad-0.15.1b.tar.gz -C $SRC_DIR
#tar xvzf ./tarball/madplay-0.15.2b.tar.gz -C $SRC_DIR

cd $SRC_DIR/libid3tag-0.15.1b
./configure --prefix=$TARGET_DIR
make;make install
cd ../../

cd $SRC_DIR/libmad-0.15.1b
./configure --prefix=$TARGET_DIR
make;make install
cd ../..

cd $SRC_DIR/madplay-0.15.2b
./configure --prefix=$TARGET_DIR CPPFLAGS=-I$TARGET_DIR/include LDFLAGS=-L$TARGET_DIR/lib
make;make install
cd ../../
[root@HeBi madplay]#

在安裝過程中會出現(xiàn)錯(cuò)誤:

cc1: error: unrecognized command line option "-fforce-mem"
make[2]: *** [version.lo] 錯(cuò)誤 1
make[2]: Leaving directory `/opt/GTStudio/GT2440/madplay/src-x86/libmad-0.15.1b'
make[1]: *** [all-recursive] 錯(cuò)誤 1
make[1]: Leaving directory `/opt/GTStudio/GT2440/madplay/src-x86/libmad-0.15.1b'
make: *** [all] 錯(cuò)誤 2
make  install-recursive

 

configure: error: mad.h was not found
*** You must first install libmad before you can build this package.
*** If libmad is already installed, you may need to use the CPPFLAGS
*** environment variable to specify its installed location, e.g. -I

.
make: *** 沒有指明目標(biāo)并且找不到 makefile。 停止。
make: *** 沒有規(guī)則可以創(chuàng)建目標(biāo)“install”。 停止。
[root@HeBi madplay]#

解決辦法:

[root@HeBi madplay]# ls
build-arm  build-x86  src-arm  src-x86  tarball  target-arm  target-x86
[root@HeBi madplay]# cd src-x86/
[root@HeBi src-x86]# ls
libid3tag-0.15.1b  libmad-0.15.1b  madplay-0.15.2b
[root@HeBi src-x86]# cd libmad-0.15.1b/
[root@HeBi libmad-0.15.1b]# ls
aclocal.m4     config.sub    depcomp        imdct_s.dat     libtool      mkinstalldirs  synth.c
bit.c          configure     fixed.c        INSTALL         ltmain.sh    msvc++         synth.h
bit.h          configure.ac  fixed.h        install-sh      mad.h        qc_table.dat   timer.c
CHANGES        COPYING       frame.c        layer12.c       mad.h.sed    README         timer.h
config.guess   COPYRIGHT     frame.h        layer12.h       Makefile     rq_table.dat   TODO
config.h       CREDITS       global.h       layer3.c        Makefile.am  sf_table.dat   VERSION
config.h.in    D.dat         huffman.c      layer3.h        Makefile.in  stamp-h1       version.c
config.log     decoder.c     huffman.h      libmad.list     minimad.c    stream.c       version.h
config.status  decoder.h     imdct_l_arm.S  libmad.list.in  missing      stream.h       version.loT
[root@HeBi libmad-0.15.1b]# vi configure


/-fforce-mem

 

case "$optimize" in
        -O|"-O "*)
            optimize="-O"
            optimize="$optimize -fforce-mem"   //刪掉-fforce-mem

//高版本編譯器已經(jīng)去除這項(xiàng);

//所以編譯不通過;
            optimize="$optimize -fforce-addr"

 

[root@HeBi madplay]# ls
build-arm  build-x86  src-arm  src-x86  tarball  target-arm  target-x86
[root@HeBi madplay]# vi build-x86

 


#tar xvzf ./tarball/libid3tag-0.15.1b.tar.gz -C $SRC_DIR
#tar xvzf ./tarball/libmad-0.15.1b.tar.gz -C $SRC_DIR
#tar xvzf ./tarball/madplay-0.15.2b.tar.gz -C $SRC_DIR  //注釋這三行

 

[root@HeBi madplay]# ./build-x86

//重新編譯;

[root@HeBi madplay]# cd target-x86/
[root@HeBi target-x86]# ls
bin  include  lib  man  share
[root@HeBi target-x86]# cd bin/
[root@HeBi bin]# ls
abxtest  madplay
[root@HeBi bin]# ./madplay /home/zhanghanzhong/CHINESE_HEART.MP3
MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
          Title: ?μ?й
         Artist: ???
        Comment: ?V±|μ

//在PC機(jī)上播放音樂

4、構(gòu)建編譯腳本build-x86

同樣的方法編譯madplay;arm下需要zlib-1.2.3

[root@HeBi madplay]# cd src-arm/
[root@HeBi src-arm]# ls
libid3tag-0.15.1b  libmad-0.15.1b  madplay-0.15.2b  zlib-1.2.3
[root@HeBi src-arm]#

開發(fā)板下嘗試MP3:

[root@ hebi /]# mount -t nfs -o nolock 192.168.1.103:/opt /mnt  //掛載NFS文件系統(tǒng)
[root@ hebi/]# cd /mnt/
[root@ hebi/mnt]# ls
GTStudio    TX44b0      lost+found
[root@zhanghanzhong /mnt]#

[root@ GT2440]# cd madplay/
[root@ madplay]# ls
build-arm   src-arm     tarball     target-x86
build-x86   src-x86     target-arm
[root@ hebi madplay]# cd target-arm/
[root@ hebi  target-arm]# ls
bin      include  lib      man      share
[root@ target-arm]# cd bin/
[root@ hebi bin]# ls
abxtest  madplay
[root@ hebi bin]# ./madplay /root/Documents/chinese_heart.mp3
./madplay: error while loading shared libraries: libid3tag.so.0: cannot open shared object file: No such file or directory
[root@ hebi bin]#

//從文件系統(tǒng)root_qtopia_2.2.0.tar.gz;

//找到libid3tag.so.0,并放到/lib目錄下:
[root@ hebi GTStudio]# ls
GT2440          libid3tag.so.0
[root@ hebi GTStudio]# cp libid3tag.so.0  /lib/
[root@hebi  GTStudio]# madplay
Usage: madplay [OPTIONS] FILE [...]
Try `madplay --help' for more information.
[root@hebi  GTStudio]# madplay /root/Documents/chinese_heart.mp3
MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
          Title: ?òμ??D1úD?
         Artist: ???÷??
        Comment: ò?à?±|μ?         //從終端復(fù)制過來,顯示為亂碼;

 查看需要的動態(tài)庫:

[root@HeBi madplay]# cd target-arm/
[root@HeBi target-arm]# ls
bin  include  lib  man  share
[root@HeBi target-arm]# cd bin/
[root@HeBi bin]# ls
abxtest  madplay
[root@HeBi bin]# arm-linux-readelf -d madplay

方法二:

linux 查看可執(zhí)行文件依賴的動態(tài)鏈接庫

[root@HeBi lib]# arm-linux-objdump -x libm.so.6 | grep NEEDED
  NEEDED               ld-linux.so.2
  NEEDED               libc.so.6
[root@HeBi lib]#

 

 

Dynamic section at offset 0x1400c contains 29 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libmad.so.0]
 0x00000001 (NEEDED)                     Shared library: [libid3tag.so.0]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libgcc_s.so.1]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
 0x0000000f (RPATH)                      Library rpath: [/opt/GTStudio/GT2440/madplay/target-arm/lib]
 0x0000000c (INIT)                       0x9830
 0x0000000d (FINI)                       0x19208
 0x00000019 (INIT_ARRAY)                 0x24000
 0x0000001b (INIT_ARRAYSZ)               4 (bytes)
 0x0000001a (FINI_ARRAY)                 0x24004
 0x0000001c (FINI_ARRAYSZ)               4 (bytes)
 0x00000004 (HASH)                       0x8168
 0x00000005 (STRTAB)                     0x8d30
 0x00000006 (SYMTAB)                     0x8500
 0x0000000a (STRSZ)                      1527 (bytes)
 0x0000000b (SYMENT)                     16 (bytes)
 0x00000015 (DEBUG)                      0x0
 0x00000003 (PLTGOT)                     0x2411c
 0x00000002 (PLTRELSZ)                   832 (bytes)
 0x00000014 (PLTREL)                     REL
 0x00000017 (JMPREL)                     0x94f0
 0x00000011 (REL)                        0x9490
 0x00000012 (RELSZ)                      96 (bytes)
 0x00000013 (RELENT)                     8 (bytes)
 0x6ffffffe (VERNEED)                    0x9430
 0x6fffffff (VERNEEDNUM)                 3
 0x6ffffff0 (VERSYM)                     0x9328
 0x00000000 (NULL)                       0x0
[root@HeBi bin]#

 

 

靜態(tài)編譯:

  加上:--disable-shared --enable-static

  即可把需要的庫編譯;而不需要?jiǎng)討B(tài)庫;

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产午夜福利一区二区| 国产欧美日韩视频91| 欧美丰满人妻少妇精品| 国产麻豆一线二线三线| 色综合久久超碰色婷婷| 亚洲日本中文字幕视频在线观看| 中文字幕日韩欧美理伦片| 日韩人妻中文字幕精品| 国产一级内片内射免费看| 日韩精品毛片视频免费看| 国内精品偷拍视频久久| 亚洲日本韩国一区二区三区| 日韩毛片视频免费观看| 国产日韩欧美国产欧美日韩| 午夜精品国产一区在线观看| 九九蜜桃视频香蕉视频| 日本高清不卡一二三区| 99热中文字幕在线精品| 日韩不卡一区二区在线| 丁香六月婷婷基地伊人| 99久久精品午夜一区| 国产成人精品午夜福利| 中文字幕在线区中文色| 日韩欧美一区二区黄色| 精品日韩视频在线观看| 日韩精品一区二区毛片| 国产一区二区三区午夜精品 | 国产精品亚洲综合天堂夜夜| 亚洲一区二区三区四区性色av| 精品久久综合日本欧美| 国产在线视频好看不卡| 国产欧美韩日一区二区三区| 久久福利视频在线观看| 99久久无色码中文字幕免费| 国产偷拍盗摄一区二区| 加勒比系列一区二区在线观看 | 国内精品一区二区欧美| 日韩一区二区三区高清在| 熟女少妇一区二区三区蜜桃| 日韩欧美高清国内精品| 成年女人下边潮喷毛片免费|