madlife 交叉編譯

如何在PC和arm中的虛擬機中製作一個mp3 player。
需要準備的庫文件有zlib-1.2.3.tar.gz,libid3tag-0.15.1b.tar.gz,libmad-0.15.1b.tar.gz,madplay-0.15.2b.tar.gz。
zlib-1.2.3.tar.tar用於文件的壓縮和解壓
libid3tag-0.15.1b.tar.gz mp3的解碼庫
libmad-0.15.1b.tar.gz madplay的庫文件
madplay-0.15.2b.tar.gz 播放程序的壓縮包,mp3播放器的源碼。
在PC環境下配置和編譯madplay,並使用madplay播放mp3.

1.安裝zlib-1.2.3.tar.gz
解壓過後,進入源碼目錄。
linux中.a後綴爲靜態庫,.so文件爲動態庫。解壓後的庫文件可在/usr/lib中查看
先要對其進行配置,生成Makefile。
執行./configure(保證configure文件是可執行的就可)
make
make生成libz.a庫
再把生成的庫安裝到系統中
make install
在/usr/local/lib中。
後續的安裝與此相同。

2.安裝libid3tag-0.15.1b

3.安裝libmad-0.15.1b
安裝的時候出現一個錯誤。
cc1: error: unrecognized command line option “-fforce-mem”
解決方式是:找到libmad configure之後的Makefile
找到包含”-fforce-mem”字符串,將其刪除,就可以了。
原因是gcc 3.4 或者更高版本,已經將其去除了,所以會出現上面的錯誤。

4.安裝madplay-0.15.2b

5.執行madplay
./madplay filename.mp3
又出現錯誤
./madplay: error while loading shared libraries: libmad.so.0: cannot open shared object file: No such file or directory
有網友是這麼解釋的
軟連接只是一個軀殼。動態鏈接庫的版本不對。libmad.so.0這是你需要的,雖然那裏存在一個libmad.so.0,但是它是指向其它的版本的一個軟連接,所以程序就會發生讀取錯誤的信息了。解決方法就是降低那個動態鏈接庫的版本,直接搞一個過去,或者卸載現在的,安裝較低版本的。
意思就是要重新下個低版本的庫。
我是參考另外一個網友的解決方法的
I looked for libmp3lame.so and found one in /usr/local/lib (evidently, ffmpeg couldn’t see it there; ffmpeg was searching for libmp3lame.so.0 in /usr/lib/, not in /usr/local/lib/). It was clear that /usr/local/lib/libmp3lame.so is a symlink to/usr/local/lib/libmp3lame.so.0.0.0. So all I had to do was making one moresymlink in /usr/lib/, pointing at /usr/local/lib/libmp3lame.so.0.0.0:
雖然目的不一樣,但是出現的錯誤是一樣的。大意是要爲這個庫文件在/usr/lib這個位置建立同步連接。
所以我爲兩個庫文件建立了連接
ln -s /usr/local/lib/ libmad.so.0 /usr/lib/libmad.so.0
ln -s /usr/local/lib/ libid3tag.so.0 /usr/lib/ libid3tag .so.0
然後執行上述播放命令就可以了。

交叉編譯時與上述過程相同,但是在配置的時候要做些修改。
1.安裝zlib
用交叉編譯工具編譯zlib,並且把庫生成到交叉編譯環境的庫目錄下
./configure –prefix=/usr/local/arm/3.4.1/arm-linux. –prefix是便於尋找頭文件和庫文件
修改Makefile.
CC=arm-linux-gcc
AR=arm-linux-ar rc
RANLIB=arm-linux-ranlib

make
make install

2.編譯libid3tag
./configure CC=arm-linux-gcc –host=arm-linux –disable-debugging -disable-shared –prefix=/usr/local/arm/3.4.1/arm-linux
make
make install
說明:–host指明庫運行的環境arm-linux不是ix86-pc-linux.
-disable-shared 編譯器默認是動態連接共享庫的。這裏指明爲靜態連接(關鍵)。

3.編譯libmad
./configure –enable-fpm=arm –host=arm-linux –disable-shared –disable-debugging –prefix=/usr/local/arm/3.4.1/arm-linux CC=arm-linux-gcc
make
make install

4.編譯madplay
./configure –host=arm-linux CC=arm-linux-gcc –disable-debugging –disable-shared
make
make install
完成以後把生成的可執行文件madplay下載到開發板中
執行./madplay filename.mp3就可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章