分类: 嵌入式
2013-07-18 18:39:11
原文地址:madplay 移植 作者:chockly
*********************************************************************
良
好的习惯是成功的开始。
EMail:cblock@126.com
QQ:57004294
*********************************************************************
))))*****madplay
的移植*******2009/09/23*******Fegus Zeng*********((((
*********************************************************************
tool
version:
arm-linux-gcc 4.4.3
redhat9.0
TQ2440 ARM9开发板
software version:
libid3tag-0.15.1b.tar.gz
libmad-0.15.1b.tar.gz
zlib-1.2.3.tar.gz
madplay-0.15.2b.tar.gz
*********************************************************************
1.
首先建立移植目录树
一般结构如下:
---madplay
|------libs
(存放库源码目录)
|------output (存放对应平台移植后的程序)
| |---arm-linux
| |---X86
|------docs
(存放移植文档)
|------project (存放其他工程文件,如source insight工程)
*********************************************************************
2.
解压库源码包到libs下,解压主程序源码包到madplay下即可。
#tar zxvf
libid3tag-0.15.1b.tar.gz
#tar zxvf libmad-0.15.1b.tar.gz
#tar zxvf zlib-1.2.3.tar.gz
#cd ..
#tar zxvf
madplay-0.15.2b.tar.gz
*********************************************************************
3.
开始编译库
注意:每次configure之前请运行./configure --help
****************************************
a.)
移植zlib库
# cd libs/zlib-1.2.3/
#./configure
--prefix=/arm/madplay/output/ --shared
生成Makefile,修改Makefile如下变量:
CROSS=arm-linux-
CC=${CROSS}gcc
LDSHARED=${CROSS}gcc
-shared -Wl,-soname,libz.so.1
CPP=${CROSS}gcc -E
AR=${CROSS}ar rc
RANLIB=${CROSS}ranlib
保存退出,
#make
#make install
若发现目录设置有误,可使用make uninstall撤销安装,make distclean,make
clean撤销编译
****************************************
b.)移植libid3tag
./configure --prefix=/arm/madplay/output/ --host=arm-linux
--enable-shared --enable-static
****************************************
c.)
移植libmad
****************************
第一次尝试--->失败:
./configure --prefix=/arm/madplay/output/ --host=arm-linux
--enable-shared --enable-static
make后出现以下错误:
cc1: error:
unrecognized command line option "-fforce-mem"
make[2]: ***
[version.lo] Error 1
make[2]: Leaving directory
`/arm/madplay/libs/libmad-0.15.1b''
make[1]: *** [all-recursive]
Error 1
make[1]: Leaving directory
`/arm/madplay/libs/libmad-0.15.1b''
make: *** [all] Error 2
****************************
第
二次尝试-->成功
分析原因:编译器不支持该选项-fforce-mem
对策:查找Makefile中"fforce-mem",
将其删除,再试:
CFLAGS = -Wall -g -O -fforce-mem -fforce-addr -fthread-jumps
-fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations
-fregmove -fschedule-insns2 -fstrength-reduce
在Makefile
129行,删除"-fforce-mem".
#make
#makeinstall
*********************************************************************
4.
开始编译madplay
****************************************
第一次尝试--->
失败:
./configure --prefix=/arm/madplay/output/ --host=arm-linux
configure
出错:
configure: error: mad.h was not found
*** You must first
install libmad before you can build this package.
*** If libmad is
already installed, you may need to use the CPPFLAGS
*** environment
variable to specify its installed location, e.g. -I