本文转载自:https://blog.csdn.net/qq361294382/article/details/50525412

这两天做madplayer移植,由于是刚装的ubuntu14.04,所以有好多库没装,还有其它未配置起来的地方,搞起来有几个问题,不过组后按着教程一步一步都解决了。

首先需要准备的安装包如下:

madplay-0.15.2b.tar.gz

libmad-0.15.1b.tar.gz
libid3tag-0.15.1b.tar.gz

zlib-1.1.4.tar.gz

前三个包地址:http://sourceforge.net/project/showfiles.php?group_id=12349

第四个包zlib地址:http://www.gzip.org/zlib/zlib-1.1.4.tar.gz中找到。

我的所有库和头文件都安装在目录:/work/drivers_and_test/21th_sound/app/tmp里面,用到的4个包都解压在/work/drivers_and_test/21th_sound/app/目录下,可以自己根据自己需要建立自己的安装目录。

1.安装zlib

tar xvzf zlib-1.2.5.tar.gz 
cd zlib-1.2.3.tar.gz

./configure --host=arm-linux --prefix=/work/drivers_and_test/21th_sound/app/tmp,生成Makefile文件,

再修改makefile文件,添加自己系统中gcc所在的目录,有的不需要修改:
CC=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-gcc
AR=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-ar rcs
RANLIB=/work/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-ranlib

注:如果之前编译过,则先要把上次编译的结果清除:make distclean

接着 make
然后make install
编译好之后就可以在上面prefix指定的目录/work/drivers_and_test/21th_sound/app/tmp下的lib目录下找到libz.a这个库。

2.编译libid3tag

在libid3tag目录下执行以下操作就可以安装libid3tag库

./configure --host=arm-linux --prefix=/work/drivers_and_test/21th_sound/app/tmp CPPFLAGS=-I/work/drivers_and_test/21th_sound/app/tmp/include LDFLAGS=-L/work/drivers_and_test/21th_sound/app/tmp/lib
make 
make install

解释:CC后 的参数为交叉编译器的绝对路径,--prefix后指定的是安装目录,CPPFLAGS、LDFLAGS
后的-I、-L为固定形式,之后的路径为安装libid3tag的路径下的子目录。我一开始没有加CPPFLAGS、LDFLAGS,

有错误提示:

configure: error: zlib.h 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 CPPFLAGS
*** environment variable to specify its installed location, e.g. -I<dir>.

可能是没有在tmp目录下生成所需的库,加上-I、-L后就没这问题了。

3.编译libmad

在libmad目录下执行以下操作就可以安装libid3tag库

./configure --host=arm-linux --prefix=/work/drivers_and_test/21th_sound/app/tmp CPPFLAGS=-I/work/drivers_and_test/21th_sound/app/tmp/include LDFLAGS=-L/work/drivers_and_test/21th_sound/app/tmp/lib
make 
make install

如果有提示:"-fforce-mem"参数不能识别,打开当前目录下的Makefile文件,去掉里面出现的"-fforce-mem",然后再make,make install就OK了。

4.编译madplay
./configure --host=arm-linux --prefix=/work/drivers_and_test/21th_sound/app/tmp CPPFLAGS=-
I/work/drivers_and_test/21th_sound/app/tmp/include LDFLAGS=-L/work/drivers_and_test/21th_sound/app/tmp/lib
然后,make
这样就生成了madplay可执行文件,下载到板子上去就可以使用了。

adplayer移植【转】的更多相关文章

  1. MVVM框架从WPF移植到UWP遇到的问题和解决方法

    MVVM框架从WPF移植到UWP遇到的问题和解决方法 0x00 起因 这几天开始学习UWP了,之前有WPF经验,所以总体感觉还可以,看了一些基础概念和主题,写了几个测试程序,突然想起来了前一段时间在W ...

  2. IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)

    首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于device tree, 还是基于传统的Platf ...

  3. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  4. STM32F429 LCD程序移植

    STM32F429自带LCD驱动器,这一具有功能给我等纠结于屏幕驱动的程序员带来了很大的福音.有经验的读者一定有过这样的经历,用FSMC驱动带由控制器的屏幕时候,一旦驱动芯片更换,则需要重新针对此驱动 ...

  5. 将MPM雪模拟移植到Maya

    同事实现了一个迪士尼的MPM雪模拟论文,我将其移植到Maya中 论文题目是 A material point method for snow simulation 代码在这里: https://git ...

  6. ucos实时操作系统学习笔记——操作系统在STM32的移植

    使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只 ...

  7. DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)篇一

    关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...

  8. geotrellis使用(二十五)将Geotrellis移植到spark2.0

    目录 前言 升级spark到2.0 将geotrellis最新版部署到spark2.0(CDH) 总结 一.前言        事情总是变化这么快,前面刚写了一篇博客介绍如何将geotrellis移植 ...

  9. geotrellis使用(二十四)将Geotrellis移植到CDH中必须要填的若干个坑

    目录 前言 若干坑 总结 一.前言        近期干了一件事情,将geotrellis程序移植到CDH中(关于CDH,可以参考安装ClouderaManager以及使用ClouderaManage ...

随机推荐

  1. python 之 re模块(正则表达式)

    一.起源(历史) 正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究.美国新泽西州的Warren McCulloch和出生在美国底特律的Walter Pitts这两位神经生理方 ...

  2. OpenvSwitch自动化重新编译和安装

    相信使用过OpenvSwitch的人都知道,OpenvSwitch因为要替换一部分linux内核,所以在修改OpenvSwitch源码的时候,每次都需要重新编译和安装,这个过程十分的机械和枯燥,所以写 ...

  3. 【BZOJ3207】花神的嘲讽计划Ⅰ Hash+主席树

    [BZOJ3207]花神的嘲讽计划Ⅰ Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快 ...

  4. vue+node+mongoDB 火车票H5(一)---准备工作,基本配置

    前端菜鸟一枚,由于公司项目用到了vue,我虽然参与了,但是很多环境配置和流程还不是特别清楚,就想自己个人业余做个webapp看看, 对于完全新手而言,很多坑会纠结很久,所以想借此机会自己做的同时记录各 ...

  5. 160715、在web.xml中注册IntrospectorCleanupListener解决Quartz等框架可能产生的内存泄露问题

    增加方式如下:web.xml中加入  <listener>    <listener-class>org.springframework.web.util.Introspect ...

  6. 记录--常用的linux命令

    mysql event /*查询event是否开启(查询结果Off为关闭 On为开启)*/ show variables like '%sche%'; /*开启/关闭命令(1开启--0关闭)*/ se ...

  7. tortoisegit错误: disconnected - no supported authentication methods available(server sent: publickey)

    修改小乌龟的 SSH客户端:

  8. <2014 05 14> Android平台下2D/3D开发攻略

    Android通过OpenGL包含了对高性能2D和3D图形的支持,尤其支持OpenGLES API.OpenGL是一个跨平台的图形API,提供了软件操作3D图形硬件的接口.OpenGLES是一个专用于 ...

  9. Java中堆内存与栈内存分配浅析

    Java把内存划分成两种:一种是栈内存,另一种是堆内存.在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间, ...

  10. Redis、MongoDB及Memcached的区别 Redis(内存数据库)

    Redis.MongoDB及Memcached的区别 Redis(内存数据库) 是一个key-value存储系统(布式内缓存,高性能的key-value数据库).和Memcached类似,它支持存储的 ...