时间: 2019.01.27
arm播放音乐软件移植,交叉编译madplay,移植madplay,
4418播放音乐,arm madplay arm. cross compile madplay for arm
1. 环境:
主机: ubuntu 14.04 x64
目标:s5p4418 linux kernnel 3.4.39
编译器: arm-cortex_a9-eabi-4.7-eglibc-2.18
时间: 2019.01.27
地点:广东某搬砖城市
-
目前madplay的官方网站是:
http://www.underbit.com/products/mad/ -
透过该网站的介绍可以得知, 它还需要zlib,libmad 和libid3tag这3个库, 从该网站找到下载连接
https://sourceforge.net/projects/mad/files/
2. 步骤
* 搭建交叉编译环境,这里不在叙述,网上太多太多资料了。
搭建好交叉编译环境之后,需要编译4个库,都需要交叉编译:
-
zlib-1.2.3.tar.gz
-
libid3tag-0.15.1b.tar.gz
-
libmad-0.15.1b.tar.gz
-
madplay-0.15.2b.tar.gz
注意版本,一定要对应版本,zlib可以1.2.3版本以上的,其他3个库必须对应上述版本。下面的步骤中,编译出来的库都是相互依赖的,configure的时候, prefix(按照路径)的目的自己要先想好,而且拷贝到开发板的时候,也要和你的安装路径一致。
a. 交叉编译zlib
#tar zxf zlib-1.2.5.tar.gz
#cd zlib-1.2.5
#./configure --prefix=/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/zlib_arm_bin
Zlib配置是不支持–host项,而且,交叉编译时需要手动更改Makefile,将Makfile里的gcc、ar、ranlib均加上前缀arm-cortex_a9-eabi-4.7-xxxx-xxx(看个人的编译器而言),再执行make && make install,编译安装成功后在–prefix指定的目录下生成include、shared和lib目录
b. 交叉编译 libid3tag
PATH=/opt_WQ/arm-cortex_a9-eabi-4.7-eglibc-2.18/bin:$PATH
CPPFLAGS=-I/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/zlib_arm_bin/include
LDFLAGS=-L/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/zlib_arm_bin/lib
./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/libid3tag_bin_arm --disable-shared
c. 交叉编译 libmad
./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/libmad_bin_arm --disable-shared
这里有可能出错,我出错:: error: unrecognized command line option ‘-fforce-mem’
解决方法:
找到相关Makefile
编辑器打开,我们需呀修改Makfile,例如: vi Makefile
找到包含”-fforce-mem”字符串,将其删除
再次编译,即可通过:
make && make install
d. 交叉编译 madplayer
只要上面的库交叉编译过了,版本对了,下面编译会很顺利,不会报错。
export LDFLAGS="-L/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/zlib_arm_bin/lib -L/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/libid3tag_bin_arm/lib -L/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/libmad_bin_arm/lib"
export CPPFLAGS="-I/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/zlib_arm_bin/include -I/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/libid3tag_bin_arm/include -I/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/libmad_bin_arm/include"
./configure --host=arm-cortex_a9-linux-gnueabi --prefix=/home_WQ/linux4418/eglfs_qt4.8/3rd_libs/madplay_bin --disable-shared --enable-static
make
make install