歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Madplayer移植到mini2440

一、         環境

a)       操作系統:Linux5 (內核版本:2.6.18-164.el5)

b)      開發板:mini2440(nand 128M,SDRAM 64M)

c)       編譯器:gcc 4.4.3 àarm-linux-gcc-4.4.3

二、         設備

a)       PC機、ARM9mini2440開發板

三、         資源

a)       調用的庫

                       i.              libid3tag-0.15.1b.tar.gz

                     ii.              libmad-0.15.1b.tar.gz

                  iii.              madplay-0.15.2b.tar.gz(第二版本)

                  iv.              zlib-1.2.5.tar.bz2

                     v.              libstdc++.so.6.0.10 (編譯器的替換庫)

注:目前madplay的官方網站是http://www.underbit.com/products/mad/

透過該網站的介紹可以得知, 它還需要libmad 和libid3tag 兩個庫, 從該網站找到下載連接

http://sourceforge.net/project/showfiles.php?group_id=12349

b)      編譯器

                       i.              arm-linux-gcc-4.4.3.tar.gz

c)       傳輸工具

                       i.              tftp軟件(也可以用其他的傳輸)

四、         步驟

a)       首先搭建交叉編譯環境

                       i.              將arm-linux-gcc-4.4.3.tar.gz解壓到一個空文件夾中

#tar zvxf arm-linux-gcc-4.4.3.tar.gz –C / (C的後面有空格)

                     ii.              改變環境

#gedit  /root/.bashrc

                  iii.              將路徑改為/opt/FriendlyARM/toolschain/4.4.3/bin

expotr  PATH=$PATH:/ opt/FriendlyARM/toolschain/4.4.3/bin

 保存退出之後,要重啟一下機子命令如下

   #reboot

                  iv.              重啟之後查看是否編譯成功

# arm-linux-gcc –v

在最後一行如果出現了版本號就是編譯成功了

b)      修改編譯調用的庫鏈接

                       i.              # strings /usr/lib/libstdc++.so.6 | grep GLIBC

   結果的最後一句話:

GLIBCXX_3.4      沒有GLIBCXX_3.4.9

                     ii.              # ls -l  /usr/lib/libstdc++.so.6

結果鏈接(快捷方式)為

/usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.8

                  iii.              # rm –rf /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.8

                  iv.              #ls -l  /usr/lib/libstdc++.so.6

出現:/usr/lib/libstdc++.so.6:沒有那個文件或目錄

                     v.              把(資源)libstdc++.so.6.0.10放入/usr/lib中

                  vi.              重新做鏈接

#ln -s /usr/lib/libstdc++.so.6.0.10  /usr/lib/libstdc++.so.6

c)       建立工作目錄,拷貝源代碼包

在/opt/FriendlyARM/mini2440 目錄下建立madplay 目錄,並以此為工作目錄,並在該目錄中建立以下子目錄,以存放不同的文件:

#cd /opt/FriendlyARM/mini2440

#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 版本的安裝目錄

1.     接下來把從網上下載到的源代碼包(四個)放入 tarball 目錄中。

2.     解壓原代碼包

#cd tarball

# for f in $(ls *.tar.gz); do tar xvzf $f –C ../src-x86 ; done

(手打命令)

3.     編譯madplay 所依賴的庫文件

a) libid3tag

#cd ../src-x86/libid3tag-0.15.1b

#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86

#make

#make install

b) libmad

#cd ../ libmad-0.15.1b

#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86

#make

#make install

如果編譯時出現錯誤:cc1: error: unrecognized command line option “-fforce-mem”

解決辦法:

其實這個錯誤是編譯安裝libmad時候引起的,audacity包含libmad

解決方式是:找到libmad configure之後的Makefile,

vi Makefile

找到包含"-fforce-mem"字符串,將其刪除,就ok了

原因是gcc 4.4 或者更高版本,已經將其去除了,所以會出現上面的錯誤!

 

以上過程完畢,將在 target-x86 目錄出現編譯madplay 所依賴的庫文件和頭文件。如下:

 

4.     編譯安裝madplay

如果我們還是像剛才那樣配置編譯選項:

#cd madplay-0.15.2b

#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86

將會出現如圖錯誤:

 

提示我們在配置 madplay 之前要先安裝libmad,因為我們之前已經編譯並安裝了依賴庫,根據提示我們要設置CPPFLAGS 環境變量,采用如下參數重新配置:

#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86 CPPFLAGS=-I/opt/FriendlyARM/mini2440/madplay/target-x8

6/include

注意:上面的四行是一條命令

運行結果如圖所示:

 

提示告訴我們還要設置 LDFLAGS 環境變量,因此再次修改配置參數如下:

#cd ../src-x86/madplay-0.15.2b

#./configure --prefix=/opt/FriendlyARM/mini2440/madplay/target-x86 CPPFLAGS=-I/opt/FriendlyARM/mini2440/madplay/target-x86/include LDFLAGS=-L/opt/FriendlyARM/mini2440/madplay/target-x86/lib

注意:上面六行是一條命令

執行結果如下:

 

這說明配置已經成功,生成了編譯所需要的 Makefile 文件,輸入一下命令開始編譯安裝:

#make

#make install

執行完畢, 可執行文件將被安裝在我們指定的目錄

/opt/FriendlyARM/mini2440/madplay/target-x86 目錄中:

#ls target-x86/bin

abxtest madplay

其中abxtest 是附加生成的測試程序,不必理會。

5.     測試PC 版的madplay

拷貝一首mp3 文件到madplay 所在的目錄,執行:

#./madplay test.mp3

如果你的聲卡已經正確安裝,就可以聽到mp3 的聲音了。

6.     構建並修正ARM 版本的編譯腳本build-arm

將腳本放在/opt/FriendlyARM/mini2440/madplay下)我給它命名為mm.sh

#!/bin/sh

MADPLAY_DIR=/opt/FriendlyARM/mini2440/madplay

SRC_DIR=src-arm

TARGET_DIR=$MADPLAY_DIR/target-arm

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

tar xvjf ./tarball/zlib-1.2.5.tar.bz2 -C $SRC_DIR

export CC=arm-linux-gcc

cd $SRC_DIR/zlib-1.2.5

./configure --prefix=$TARGET_DIR

make && make install

cd ../..

cd $SRC_DIR/libid3tag-0.15.1b

./configure --host=arm-linux --prefix=$TARGET_DIR CPPFLAGS=-I$TARGET_DIR/include

LDFLAGS=-L$TARGET_DIR/lib

make;make install

cd ../../

cd $SRC_DIR/libmad-0.15.1b

./configure --host=arm-linux --prefix=$TARGET_DIR

make;make install

cd ../..

cd $SRC_DIR/madplay-0.15.2b

./configure --host=arm-linux --prefix=$TARGET_DIR CPPFLAGS=-I$TARGET_DIR/include

LDFLAGS=-L$TARGET_DIR/lib

make;make install

cd ../../ 

運行後生成madplay和lib文件。

7.     下載madplay 到開發板運行測試

為了區別於板子中已經存在的 madplay,我們把新做的改名為mymadplay,把它以及依賴庫通過 tftp 下載到開發板,並作如下放置:

執行文件:

mymadplay 放在/bin/目錄   庫文件放在/lib 目錄。

步驟如下:

一、    將Linux中的要放到開發板中的東西先弄到PC上面

            1.首先要修改開發板的IP

             #cd etc

            #vi eth0-setting   改IP網關,保存退出

            #cd init.d

            #vi ifconfig-eth0 

        在最後的幾行裡找到IP修改,保持退出

      #reboot 重啟一下!

二、    打開tftp軟件選擇PC機的IP地址同時選擇文件所在的位置

à可以查看文件

三、    在開發板中輸入命令:

a)   cd /bin/

b)   tftp –g  –r  mymadplay  PC的IP 

c)    cd  /lib

d)   tftp –g –r 庫裡面的文件 PC的IP   (一個一個的傳,當遇到pkgconfig文件夾時就在板子上面創一個pkgconfig文件夾,進入文件夾後繼續下載庫文件)

四、    在/bin文件夾中給 mymadplay 777 權限,即可使用播放器了

#./ mymadplay 1.mp3 就會顯示如下圖所示↓↓↓ 

Copyright © Linux教程網 All Rights Reserved