歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> MadPlayer移植到mini2440上(avi和wmv)

MadPlayer移植到mini2440上(avi和wmv)

日期:2017/3/1 10:52:25   编辑:Linux編程

一、 環境

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