移植madplay音樂播放器到ARM板


一、環境和軟件介紹

1、主機環境:Ubuntu16.04

2、交叉編譯器: gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67)

3、ARM板:kernel:2.6.35,SoC:S5PV210

4、軟件包: zlib-1.2.3 、 libid3tag-0.15.1b.tar.gz 、 libmad-0.15.1b.tar.gz 、 madplay-0.15.2b.tar.gz,后三個獲取鏈接:https://sourceforge.net/projects/mad/files/

二、移植以上幾個庫

1、交叉編譯zlib-1.2.3

這個不細說,原因:我自己以前移植過了,在系統里存有編譯好的zlib庫文件,這百度也可以找到移植的方法

2、交叉編譯libid3tag-0.15.1b.tar.gz(這個編譯要依賴zlib的庫)

(1)解壓:

tar -xvf libid3tag-0.15.1b.tar.gz

(2)配置:

cd libid3tag-0.15.1b/
./configure --host=arm-linux CC=arm-linux-gcc --enable-static --disable-shared --disable-debugging --prefix=/root/madplay_installed CPPFLAGS=-I/root/dir_lib/include LDFLAGS=-L/root/dir_lib/lib

注意:

CC=arm-linux-gcc這選項是指定編譯工具鏈。但是這前提是我已經為我的工具鏈創建了arm-linux-xxx這樣的符號鏈接,並且將路徑導出到了PATH

--prefix=/root/madplay_installed這個指定的是我自定義的libid3tag-0.15.1b的安裝目錄

CPPFLAGS=-I/root/dir_lib/include LDFLAGS=-L/root/dir_lib/lib,這是我這里特例,這是我指定的我之前編譯好了的zlib的頭文件和庫的路徑。

在./configure配置完了后,一定要看打印出來的信息,或者查看配置生成的Makefile,看看是否配置使用自己的交叉編譯工具鏈

(3)編譯並安裝:

make -j4
make install

 3、交叉編譯 libmad-0.15.1b.tar.gz

(1)解壓:

tar -xvf libmad-0.15.1b.tar.gz

(2)配置:

cd libmad-0.15.1b/
./configure --host=arm-linux --enable-static --disable-shared -disable-debugging --prefix=/root/madplay_installed

注意:

--host=arm-linux這選項是指定編譯工具鏈。但是這前提是我已經為我的工具鏈創建了arm-linux-xxx這樣的符號鏈接,並且將路徑導出到了PATH

--prefix=/root/madplay_installed這個指定的是我自定義的 libmad-0.15.1b的安裝目錄

在./configure配置完了后,一定要看打印出來的信息,或者查看配置生成的Makefile,看看是否配置使用自己的交叉編譯工具鏈

 

(3)編譯:

make -j4

出錯:

 這是因為編譯工具鏈的版本過高導致的,高版本的 gcc 沒有 "-fforce-mem" 參數,解決的辦法是在 Makefile 里面查找 "-fforce-mem" ,將其刪除即可 make 通過。

(4)安裝

make install

 4、交叉編譯madplay-0.15.2b.tar.gz

(1)解壓:

tar -xvf madplay-0.15.2b.tar.gz

(2)配置:

cd ~/madplay-0.15.2b/
./configure CC=arm-linux-gcc --host=arm-linux --enable-static --disable-shared --disable-debugging --prefix=/root/madplay_installed CPPFLAGS=-I/root/madplay_installed/include LDFLAGS=-L/root/madplay_installed/lib

注意:

CC=arm-linux-gcc:這選項是指定編譯工具鏈。但是這前提是我已經為我的工具鏈創建了arm-linux-xxx這樣的符號鏈接,並且將路徑導出到了PATH

--prefix=/root/madplay_installed:這個指定的是我自定義的madplay-0.15.2b的安裝目錄

CPPFLAGS=-I/root/madplay_installed/include:指定libmad-0.15.1b的頭文件安裝目錄

LDFLAGS=-L/root/madplay_installed/lib:指定libmad-0.15.1b的庫文件安裝目錄

在./configure配置完了后,一定要看打印出來的信息,或者查看配置生成的Makefile,看看是否配置使用自己的交叉編譯工具鏈

(3)編譯:

make -j4

出錯:

但是在./configure配置時,已經指定了libmad-0.15.1b的頭文件和庫文件的安裝目錄,沒搞懂為什么,然后后來想到libmad-0.15.1b的庫依賴與zlib的庫,所以就索性把zlib編譯后得到的頭文件和庫文件都拷貝一份到/root/madplay_installed下的相應子文件夾中,然后再次編譯,就通過了。

(4)安裝

make install

我們最終需要的就是madplay這個可執行程序,把它移植到ARM板,可以通過./madplay xxx(xxx為mp3格式的音樂)來測試。

在一個程序中使用madplay,包括播放,暫停播放,恢復播放,停止播放

//&:代表后台運行
system("madplay north.mp3 &");//利用system函數調用madplay播放器播放*.mp3音樂 system("madplay north.mp3 -r &");//循環播放:參數-r system("killall -9 madplay");//利用system函數調用killall命令將madplay終止掉 system("killall -STOP madplay &");//利用system函數調用killall命令將madplay暫停 system("killall -CONT madplay &");//利用system函數調用killall命令恢復madplay的播放

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM