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

我们最终需要的就是madplay这个可执行程序,把它移植到ARM板,可以通过./madplay xxx(xxx为mp3格式的音乐)来测试。
移植madplay到ARM板的更多相关文章
- Madplay移植到mini2440开发板【转】
本文转载自:https://blog.csdn.net/simanstar/article/details/24035379 madplay交叉编译 交叉编译器:arm-linux-gcc 3.4.1 ...
- ARM板移植udev-126
下载udev-126.tar.xz 下载的网址为: https://mirrors.edge.kernel.org/pub/linux/utils/kernel/hotplug/ 解压文件并且编译 # ...
- SQL数据库移植到ARM板步骤
SQL作为一种存储数据的数据结构,具有体积小(能堵存储的数据多),容易移植等优点.例如,在Ubuntu或者ARM开发板上被大量应用.下面就简单说一下SQL移植到ARM板的步骤. 下载源代码 (记得在家 ...
- 移植seetafaceengine-master、opencv到ARM板
0.前言 在要移植opecv和SeetaFaceEngine-master到ARM板子上运行的所有步骤之前,有几点需要注意的: 查看板子运行的Kernel版本 交叉编译工具链的gcc版本,关键就是工具 ...
- OK6410移植madplay播放器,王明学learn
对于ok6410的madplay移植主要包括三部分.声卡驱动移植,播放器的移植,以及alsa库的移植. 一.首先移植声卡驱动以及播放器 ok6410采用WM97系列的声卡芯片,要使得内核支持该驱动,首 ...
- 移植madplay到jz2440【学习笔记】
平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山一期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC) 3.4.5 PC环境:ubuntu16.04 一.移植ma ...
- linux 3.4.103 内核移植到 S3C6410 开发板 移植失败 (问题总结,日本再战!)
linux 3.4.103 内核移植到 S3C6410 开发板 这个星期差点儿就搭在这里面了,一開始感觉非常不值得,移植这样的浪费时间的事情.想立刻搞定,然后安安静静看书 & coding. ...
- 编译在arm板上使用的sqlite3的静动态库
采用的是sqlite-autoconf-3080002.tar.gz 解压 tar xvf sqlite-autoconf-3080002.tar.gz 进入 cd sqlite-autoconf-3 ...
- 【原创】车载实时路况信息接收终端移植于Smart210开发板 --- 综合教程
[原创]车载实时路况信息接收终端移植于Smart210开发板 --- 综合教程 所用工具: windows电脑 Ubuntu12.04 Smart210开发板 4g以上SD卡 U盘 步骤: 1. ...
随机推荐
- 10行Python代码计算汽车数量
当你还是个孩子坐车旅行的时候,你玩过数经过的汽车的数目的游戏吗? 在这篇文章中,我将教你如何使用10行Python代码构建自己的汽车计数程序. 以下是环境及相应的版本库: Python版本 3.6.9 ...
- Rust入坑指南:居安思危
任何事情都是相对的,就像Rust给我们的印象一直是安全.快速,但实际上,完全的安全是不可能实现的.因此,Rust中也是会有不安全的代码的. 严格来讲,Rust语言可以分为Safe Rust和Unsaf ...
- html vue简单
1.Vue 简单的替换更新 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- ICPC训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019
I题 求 a 数组平方的前缀和和求 a 数组后缀和,遍历一遍即可 AC代码 #include<iostream>#include<cmath>using namespace s ...
- 使用jdbc实现简单的mvc模式的增删改查
Mvc模式设计: 视图:添加界面(addUser.jsp),修改界面(updateUser.jsp),显示页面(allUser.jsp) 控制器:添加信息控制器(AddUserServlet),修改信 ...
- 细数Java项目中用过的配置文件(ini 篇)
Java 菜鸟,会把可变的配置信息写死在代码里:Java 老鸟,会把可变的配置信息提取到配置文件中.坊间流传这么一句非科学的衡量标准,来评判程序员的级别. 那么,项目中的配置信息,你平时都是怎样来实现 ...
- markdown多张图片并排显示
在markdown中,目前,让图片像这样并排居中的方式主要是两种: 更快速.更有效地创建对象 #2 使用数据访问对象和代理设计模式分离体系结构 #3 使用委托.工厂和单元素设计模式改善代码流和控制 #4 在不修改对象 ...
- scratch 如何改变变量的作用域
在新建变量的时候,有个选项是“适用于所有角色”还是“仅适用于当前角色”.通常称前者为全局变量,所有角色都可以访问到这个变量:后者,称为局部变量,只能在当前角色里访问到这个变量.例如,在使用克隆功能时, ...
- 鬼吹灯之龙岭迷窟百度云迅雷BT在线观看免费全集
看视频搜索微信公众号:qyw1091 还记得去年5月11日在高家堡举行的<鬼吹灯之龙岭迷窟>开机仪式吗?时隔数月,这部网剧于4月1日将在腾讯视频全网独播了! . <鬼吹灯之龙岭迷窟& ...