移植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設定為靜態。