一、环境和软件介绍

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

我们最终需要的就是madplay这个可执行程序,把它移植到ARM板,可以通过./madplay xxx(xxx为mp3格式的音乐)来测试。

移植madplay到ARM板的更多相关文章

  1. Madplay移植到mini2440开发板【转】

    本文转载自:https://blog.csdn.net/simanstar/article/details/24035379 madplay交叉编译 交叉编译器:arm-linux-gcc 3.4.1 ...

  2. ARM板移植udev-126

    下载udev-126.tar.xz 下载的网址为: https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/ 解压文件并且编译 # ...

  3. SQL数据库移植到ARM板步骤

    SQL作为一种存储数据的数据结构,具有体积小(能堵存储的数据多),容易移植等优点.例如,在Ubuntu或者ARM开发板上被大量应用.下面就简单说一下SQL移植到ARM板的步骤. 下载源代码 (记得在家 ...

  4. 移植seetafaceengine-master、opencv到ARM板

    0.前言 在要移植opecv和SeetaFaceEngine-master到ARM板子上运行的所有步骤之前,有几点需要注意的: 查看板子运行的Kernel版本 交叉编译工具链的gcc版本,关键就是工具 ...

  5. OK6410移植madplay播放器,王明学learn

    对于ok6410的madplay移植主要包括三部分.声卡驱动移植,播放器的移植,以及alsa库的移植. 一.首先移植声卡驱动以及播放器 ok6410采用WM97系列的声卡芯片,要使得内核支持该驱动,首 ...

  6. 移植madplay到jz2440【学习笔记】

    平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC) 3.4.5 PC环境:ubuntu16.04 一.移植ma ...

  7. linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,日本再战!)

    linux 3.4.103 内核移植到 S3C6410 开发板 这个星期差点儿就搭在这里面了,一開始感觉非常不值得,移植这样的浪费时间的事情.想立刻搞定,然后安安静静看书 & coding. ...

  8. 编译在arm板上使用的sqlite3的静动态库

    采用的是sqlite-autoconf-3080002.tar.gz 解压 tar xvf sqlite-autoconf-3080002.tar.gz 进入 cd sqlite-autoconf-3 ...

  9. 【原创】车载实时路况信息接收终端移植于Smart210开发板 --- 综合教程

    [原创]车载实时路况信息接收终端移植于Smart210开发板 --- 综合教程 所用工具: windows电脑 Ubuntu12.04 Smart210开发板 4g以上SD卡 U盘 步骤: 1.    ...

随机推荐

  1. Redis 集群--------Redis-cluster

    1集群方案 1.官方方案redis-cluster搭建实战 2.客户端分片技术(不推荐),扩容/缩容时,必须手动调整分片程序,出现故障不能自动转移 3.可以使用主从复制方式(不推荐) 4.使用一些代理 ...

  2. VRRP协议:Virtual Route

    VRRP协议:Virtual Route  Redundancy Protocol虚拟路由冗余协议.是一种容错协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而 ...

  3. sentry使用

    开篇-Sentry是什么 Sentry是开源错误跟踪,帮助开发人员实时监控和修复崩溃.不断重复.提高效率.改善用户体验. 这篇文章的作用 记录这篇文章是想分享一下,因为本人在配置时因为邮件服务花费了很 ...

  4. iOS 页面流畅技巧(2)

    一.屏幕显示图像的原理 首先从过去的 CRT 显示器原理说起.CRT 的电子枪按照上面方式,从上到下一行行扫描,扫描完成后显示器就呈现一帧画面,随后电子枪回到初始位置继续下一次扫描.为了把显示器的显示 ...

  5. mybatis入门二-----增删改查

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...

  6. Python第十二章-多进程和多线程01-多进程

    多进程和多线程 一.进程 1.1 进程的引入 现实生活中,有很多的场景中的事情是同时进行的,比如开车的时候 手和脚共同来驾驶汽车,再比如唱歌跳舞也是同时进行的:试想,如果把唱歌和跳舞这2件事情分开依次 ...

  7. Linux下使用FastDFS

    本文所有操作均在CentOS 7.x环境下进行. 1.1.单节点FastDFS 整个安装过程非常复杂,很容易出错,建议进行多次备份. 我们这里不打算安装多台虚拟机,因此会把tracker和storag ...

  8. 算法(algorithm)

    算法是什么? 算法是指令的集合,是为解决特定问题而规定的一系列操作. 它是明确定义的可计算过程,以一个数据集合作为输入,并产生一个数据集合作为输出. 一个算法通常来说具有以下五个特性: 1.输入:一个 ...

  9. js中使用Timer来计时程序执行时 - [javascript] - [开发]

    在我们开发过程中,我们也在不断的学习,以及优化自己的代码质量. 我们时常需要一个计时器,来对代码某段或者某些段执行进行计时,以评估代码运行质量,考虑是否优化. 以及优化后的直观对比. JavaScri ...

  10. 从JDK源码学习Hashmap

    这篇文章记录一下hashmap的学习过程,文章并没有涉及hashmap整个源码,只学习一些重要部分,如有表述错误还请在评论区指出~ 1.基本概念 Hashmap采用key算hash映射到具体的valu ...