移植madplay到ARM板
一、环境和软件介绍
1、主机环境:Ubuntu16.04
2、交叉编译器: gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67)
3、ARM板:kernel:2.6.35,SoC:S5PV210
4、软件包: zlib-1.2.3 、 libid3tag-0.15.1b.tar.gz 、 libmad-0.15.1b.tar.gz 、 madplay-0.15.2b.tar.gz,后三个获取链接:https://sourceforge.net/projects/mad/files/
二、移植以上几个库
1、交叉编译zlib-1.2.3
这个不细说,原因:我自己以前移植过了,在系统里存有编译好的zlib库文件,这百度也可以找到移植的方法
2、交叉编译libid3tag-0.15.1b.tar.gz(这个编译要依赖zlib的库)
(1)解压:
tar -xvf libid3tag-0.15.1b.tar.gz
(2)配置:
cd libid3tag-0.15.1b/
./configure --host=arm-linux CC=arm-linux-gcc --enable-static --disable-shared --disable-debugging --prefix=/root/madplay_installed CPPFLAGS=-I/root/dir_lib/include LDFLAGS=-L/root/dir_lib/lib
注意:
CC=arm-linux-gcc这选项是指定编译工具链。但是这前提是我已经为我的工具链创建了arm-linux-xxx这样的符号链接,并且将路径导出到了PATH
–prefix=/root/madplay_installed这个指定的是我自定义的libid3tag-0.15.1b的安装目录
CPPFLAGS=-I/root/dir_lib/include LDFLAGS=-L/root/dir_lib/lib,这是我这里特例,这是我指定的我之前编译好了的zlib的头文件和库的路径。
在./configure配置完了后,一定要看打印出来的信息,或者查看配置生成的Makefile,看看是否配置使用自己的交叉编译工具链
(3)编译并安装:
make -j4
make install
3、交叉编译 libmad-0.15.1b.tar.gz
(1)解压:
tar -xvf libmad-0.15.1b.tar.gz
(2)配置:
cd libmad-0.15.1b/
./configure --host=arm-linux --enable-static --disable-shared -disable-debugging --prefix=/root/madplay_installed
注意:
–host=arm-linux这选项是指定编译工具链。但是这前提是我已经为我的工具链创建了arm-linux-xxx这样的符号链接,并且将路径导出到了PATH
–prefix=/root/madplay_installed这个指定的是我自定义的 libmad-0.15.1b的安装目录
在./configure配置完了后,一定要看打印出来的信息,或者查看配置生成的Makefile,看看是否配置使用自己的交叉编译工具链
(3)编译:
make -j4
出错:
这是因为编译工具链的版本过高导致的,高版本的 gcc 没有 “-fforce-mem” 参数,解决的办法是在 Makefile 里面查找 “-fforce-mem” ,将其删除即可 make 通过。
(4)安装
make install
4、交叉编译madplay-0.15.2b.tar.gz
(1)解压:
tar -xvf madplay-0.15.2b.tar.gz
(2)配置:
cd ~/madplay-0.15.2b/
./configure CC=arm-linux-gcc --host=arm-linux --enable-static --disable-shared --disable-debugging --prefix=/root/madplay_installed CPPFLAGS=-I/root/madplay_installed/include LDFLAGS=-L/root/madplay_installed/lib
注意:
CC=arm-linux-gcc:这选项是指定编译工具链。但是这前提是我已经为我的工具链创建了arm-linux-xxx这样的符号链接,并且将路径导出到了PATH
–prefix=/root/madplay_installed:这个指定的是我自定义的madplay-0.15.2b的安装目录
CPPFLAGS=-I/root/madplay_installed/include:指定libmad-0.15.1b的头文件安装目录
LDFLAGS=-L/root/madplay_installed/lib:指定libmad-0.15.1b的库文件安装目录
在./configure配置完了后,一定要看打印出来的信息,或者查看配置生成的Makefile,看看是否配置使用自己的交叉编译工具链
(3)编译:
make -j4
出错:
但是在./configure配置时,已经指定了libmad-0.15.1b的头文件和库文件的安装目录,没搞懂为什么,然后后来想到libmad-0.15.1b的库依赖与zlib的库,所以就索性把zlib编译后得到的头文件和库文件都拷贝一份到/root/madplay_installed下的相应子文件夹中,然后再次编译,就通过了。
(4)安装
make install