移植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

版权声明:本文为xz-954042850-qq原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xz-954042850-qq/p/12775851.html