1. 程式人生 > >移植madplay到arm開發板

移植madplay到arm開發板

這篇文章寫的很全,沒什麼好改的了。

按照上面做肯定能成功的,但是要注意目錄的問題,記得自已的目錄別搞錯了。

<--! 強烈建議不要在虛擬機器掛接Windows共享目錄下進行編譯 -->

1.配置編譯環境
 
  首先,將要使用的交叉編譯器設為預設交叉編譯器
  然後,在libid3tag-0.15.1b、libmad-0.15.1b、madplay-0.15.2b、zlib-1.2.3這四個資料夾的同一目錄建一個資料夾(例如libz),作為存放所生成檔案的地方。

  以下用目錄/root/madplayer/libz 作為例子,

2.編譯zlib-1.2.3

   ./configure --prefix=/root/madplayer/libz
 
   開啟生成的Makefile, (沒有CC等options...)

   修改CC(例如cc=arm-linux-gcc)
   修改AR(例如AR=arm-linux-ar rcs)
   修改RANLIB (例如RANLIB=arm-linux-ranlib)
   
   如果之前編譯過,先 make distclean 把上次的編譯結果清除
   
   make
   make install

3.編譯libid3tag-0.15.1b
   
  首先,zlib-1.2.3編譯完成後,才能進行此編譯
  
  ./configure --prefix=/root/madplayer/libz --host=arm-linux --disable-shared CC=arm-linux-gcc
  CPPFLAGS=-I/root/madplayer/libz/include LDFLAGS=-L/root/madplayer/libz/lib

  (欲知上述options詳情 請./configure --help)

   make
   make install

4.編譯libmad-0.15.1b
  
  ./configure --prefix=/root/madplayer/libz CC=arm-linux-gcc --host=arm-linux --disable-shared
   
  make
  make install

5.編譯madplay-0.15.2b

  ./configure --prefix=/root/madplayer/libz CC=arm-linux-gcc --host=arm-linux --disable-shared --enable-static
  CPPFLAGS=-I/root/madplayer/libz/include LDFLAGS=-L/root/madplayer/libz/lib

  make 在madplay-0.15.2b目錄下面生成madplay的可執行檔案

7.編譯中,可能遇到的問題:
 
  error: libz was not found

  *** You must first install zlib (libz) before you can build this package.

  *** If zlib is already installed, you may need to use the LDFLAGS

  *** environment variable to specify its installed location, e.g. -L

.

  沒有正確配置編譯好zlib,參考步驟2。(如仍未通過,請檢視是否使用Windows共享的目錄,若是,換到其他本地目錄再試)

  最後編譯出來的mdaplay 在開發板上執行時出現如下所示的提示:

  madplay: error while loading shared libraries: cannot open shared object file: cannot load sharedobject file: No such file or directory

  則是因為在編譯時沒有設定好靜態連結和共享庫,正確的配置就是在編譯libid3tag、libmad 和madplay 時,加上disable-shared 選項,同時(只)在madplay 的配置語句上加上enable-static設定為靜態。