首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

【Linux 嵌入式實戰】Madplay 移植到 ARM 開發板完整步驟

     編輯:關於C語言

為測試開發板音訊播放,將命令列 MP3 播放器 Madplay 及其依賴庫(libmad、libid3tag、zlib)交叉編譯移植至 ARM Linux 平台。本文記錄完整編譯參數與注意事項。

環境與原始碼

編譯順序與關鍵參數

原則:依賴關係由底層向上(zlib → libid3tag → libmad → madplay),全部靜態連結(--disable-shared),避免執行時缺庫。

1. zlib(需修改 configure 指定交叉工具)

cd zlib-1.1.4
# 修改 configure 第 24、25、63 行:
# AR="${AR-/usr/local/arm/2.95.3/bin/arm-linux-ar rcs}"
# RANLIB="${RANLIB-/usr/local/arm/2.95.3/bin/arm-linux-ranlib}"
# cc=${CC-/usr/local/arm/2.95.3/bin/arm-linux-gcc}

./configure --prefix=/home/mad/lib
make && make install

2. libid3tag(依賴 zlib)


cd libid3tag-0.15.1b
./configure --host=arm-linux --prefix=/home/mad/lib --disable-shared \
    CPPFLAGS=-I/home/mad/lib/include LDFLAGS=-L/home/mad/lib/lib
make && make install

3. libmad(核心解碼庫)


cd libmad-0.15.1b
./configure --host=arm-linux --prefix=/home/mad/lib --disable-shared
make && make install

4. madplay(播放器前端)


cd madplay-0.15.2b
./configure --host=arm-linux --prefix=/home/mad/lib --disable-shared --enable-static \
    CPPFLAGS=-I/home/mad/lib/include LDFLAGS=-L/home/mad/lib/lib
make
# 產生 madplay 執行檔,無需 make install

部署與測試

  1. 將編譯產生的 madplay 執行檔複製到開發板(如透過 NFS、TFTP 或 SD 卡)。
  2. 開發板上執行:./madplay Nobody.mp3,應可聽到音樂。

重要提醒:音訊裝置節點

Madplay 預設使用 /dev/dsp。若開發板有多個音訊裝置(如 /dev/dsp1),需修改 madplay/audio_oss.c 第 78 行的裝置路徑重新編譯。

常見問題排查

  • 編譯報「找不到 zlib.h」:確認 CPPFLAGS 指向 /home/mad/lib/include。
  • 連結報「undefined reference to `inflate`」:確認 LDFLAGS 指向 /home/mad/lib/lib 且 zlib 已先安裝。
  • 執行報「Can't open /dev/dsp」:核心未啟用 OSS 相容層,或裝置節點名稱不同,請修改 audio_oss.c。
  • 靜態連結體積過大:可在 configure 加入 --enable-static --disable-shared 並配合 strip madplay 減小體積。

相關連結

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
項目版本/路徑
宿主機Linux 2.6.18
交叉編譯工具鏈/usr/local/arm/2.95.3/bin/arm-linux-
工作目錄/home/mad/
安裝前綴/home/mad/lib
原始碼套件zlib-1.1.4、libid3tag-0.15.1b、libmad-0.15.1b、madplay-0.15.2b