madplay安装和移植问题(代码片段)

皮卡丘吉尔 皮卡丘吉尔     2022-12-09     515

关键词:

madplay安装和移植问题

madplay 安装和移植

1. madplay 在 x86 安装 遇到问题

在对 madplay 中 libid3tag-0.15.1b 执行 make 时候 报错

/usr/local/lib/libz.a(deflate.o): relocation R_X86_64_PC32 against symbol `_length_code' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
  • 执行和信息如下:
pikaqiu@ubuntu:~/board/rock_3a/madplay/tarball/libid3tag-0.15.1b$ make
make  all-recursive
make[1]: Entering directory '/home/pikaqiu/board/rock_3a/madplay/tarball/libid3tag-0.15.1b'
make[2]: Entering directory '/home/pikaqiu/board/rock_3a/madplay/tarball/libid3tag-0.15.1b'
/bin/bash ./libtool --mode=link gcc  -Wall -g -O2   -o libid3tag.la -rpath /usr/local/lib -version-info 3:0:3 version.lo ucs4.lo latin1.lo utf16.lo utf8.lo parse.lo render.lo field.lo frametype.lo compat.lo genre.lo frame.lo crc.lo util.lo tag.lo file.lo   -lz 
gcc -shared  .libs/version.o .libs/ucs4.o .libs/latin1.o .libs/utf16.o .libs/utf8.o .libs/parse.o .libs/render.o .libs/field.o .libs/frametype.o .libs/compat.o .libs/genre.o .libs/frame.o .libs/crc.o .libs/util.o .libs/tag.o .libs/file.o  -lz  -Wl,-soname -Wl,libid3tag.so.0 -o .libs/libid3tag.so.0.3.0
/usr/bin/ld: /usr/local/lib/libz.a(deflate.o): relocation R_X86_64_PC32 against symbol `_length_code' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:325: libid3tag.la] Error 1
make[2]: Leaving directory '/home/pikaqiu/board/rock_3a/madplay/tarball/libid3tag-0.15.1b'
make[1]: *** [Makefile:409: all-recursive] Error 1
make[1]: Leaving directory '/home/pikaqiu/board/rock_3a/madplay/tarball/libid3tag-0.15.1b'
make: *** [Makefile:241: all] Error 2
pikaqiu@ubuntu:~/board/rock_3a/madplay/tarball/libid3tag-0.15.1b$

  • 解决办法:

  • zlib-1.2.3 文件 重新生成 Makefile

    ./configure
    
  • 修改 Makefile 找到 CFLAGS 那行, 在最后 添加 -fPIC , 然后保存退出

    CFLAGS=-O3 -DUSE_MMAP -fPIC
    
  • 执行 make

  • 执行 make install

安装完 madplay 准备测试一下。

  • 执行 madplay xxx.mp3 报错

    pikaqiu@ubuntu:~/music$ sudo madplay MattyBRaps_Timber.mp3 
    madplay: error while loading shared libraries: libid3tag.so.0: cannot open shared object file: No such file or directory
    
  • 这是找不到这个动态库, 我们搜索一下在哪, 发现在 /usr/local/lib/ 路径下。

    pikaqiu@ubuntu:~/board/rock_3a/madplay/tarball$ find /* -name libid3tag.so.0
    /usr/local/lib/libid3tag.so.0
    
  • 编辑 /etc/ld.so.conf 文件, 在 文件最后添加 这个路径, 然后保存退出

    vim /etc/ld.so.conf
    
  • 更新配置

    sudo /sbin/ldconfig -v
    

以为这次可以播放音乐了。但… 说 没有 /dev/dsp 这个文件

我这边用的是 ubuntu 20

pikaqiu@ubuntu:~/music$ madplay MattyBRaps_Timber.mp3 
MPEG Audio Decoder 0.15.2 (beta) - Copyright © 2000-2004 Robert Leslie et al.
audio: /dev/dsp: No such file or directory
    • 解决方法: 执行 modprobe snd-pcm-oss

      • modprobe  snd-pcm-oss
        
    • 这时候执行完会发现 有了 /dev/dsp/dev/dsp1.

    • 然后往 设备写点内容进去。 在终端输入

      • echo xxxx > /dev/dsp
        
      • echo xxxx > /dev/dsp1
        
    • 最终我这里是发现 /dev/dsp1 会有一声响, 而 /dev/dsp 没有 。

      • 然后我直接 把 /dev/dsp1 改成 /dev/dsp 这样就解决。

      • mv /dev/dsp1 /dev/dsp
        
  • 这样就能播放音乐了。

如果上述的你没能解决,可以试下下面的这种。

然后通过网上说的是

原因是madplay使用oss建构,在网上查找了一些资料,可以用alsa支持oss架构

简单解决方法如下:使用madplay解码再使用aplay播放

madplay -o wav:- 1.mp3 | aplay

记得 切换 到 root 用户来运行。,问题解决

2. madplay 移植到 开发板

一共四个文件

libid3tag-0.15.1b.tar.gz
libmad-0.15.1b.tar.gz
madplay-0.15.2b.tar.gz
zlib-1.2.3.tar.gz
  • 解压文件 可以加 -C 指定解压完存放位置

    tar xvzf libid3tag-0.15.1b.tar.gz -C 解压存放的路径
    ...
    

    -C 是执行解压后存放的路径

  • 编译执行

    ./configure --host=arm-linux CC=arm-linux-gcc --prefix=存放的路径
    
    • --host 指定架构

    • CC 指定编译器

    • --prefix 指定存放路径

  • 这时候会生成了一个Makefile 我们直接执行 make 即可

    make
    
  • 执行 make install

    make install
    

剩下的那几个也这样.

最后都整完, 在 lib 路径有那些动态库

pikaqiu@ubuntu:~/board/raspberrypi/madplay/target-arm/lib$ ls
libid3tag.a  libid3tag.la  libid3tag.so  libid3tag.so.0  libid3tag.so.0.3.0  libmad.a  libmad.la  libmad.so  libmad.so.0  libmad.so.0.2.1

bin 文件 有 madplay , 通过 file madplay 可以看到 是 ARM 32位的

pikaqiu@ubuntu:~/board/raspberrypi/madplay/target-arm/bin$ ls
abxtest  madplay

pikaqiu@ubuntu:~/board/raspberrypi/madplay/target-arm/bin$ file madplay 
madplay: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.32, with debug_info, not stripped
pikaqiu@ubuntu:~/board/raspberrypi/madplay/target-arm/bin$ 

madplay 音量设置参考网址 点我跳转。

madplay安装和移植问题(代码片段)

madplay安装和移植问题madplay安装和移植1.madplay在x86安装遇到问题2.madplay移植到开发板madplay安装和移植1.madplay在x86安装遇到问题在对madplay中libid3tag-0.15.1b执行make时候报错/usr/local/lib/libz.a(deflate.o):relocationR_X86_64_PC32againstsymbol`_lengt... 查看详情

十七s3c2440音频解码芯片wm8976声卡驱动移植madplay测试(代码片段)

学习目标:1.WM9876接口和工作原理;2.WM9876驱动移植;3.WM9876应用测试;4.问题总结1.WM9876接口和工作原理 本节使用了JZ2440开发板移植WM9876驱动,其结构如下图所示,最后利用madplay工具测试音频文件。IIS和控制接口:  查看详情

madplay移植到mini2440全过程具体解释(代码片段)

madplay交叉编译交叉编译器:arm-linux-gcc3.4.1PC环境:Ubuntu8.10注意:最好在root权限下运行下面移植。否则在makeinstall时可能权限不够。一、移植madplay前的准备madplay的移植须要下面的几个包:libid3tag-0.15.1b.tar.gz、libma... 查看详情

移植madplay到arm板(代码片段)

...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这个不细说,原因:我自己以前移植过了,在系统里存有编... 查看详情

基于tiny6410的madplay播放器的移植

在移植madplay之前需要先将所需要的库移植到开发板的文件系统中。 现在每个解压后的文件夹中创建一个文件夹zlib-1.1.4.tar.gz解压:tarxvzf zlib-1.1.4.tar.gz   cdzlib-1.1.4   mkdir__install配置:./configure--shared--prefix=$(PWD)/__ins... 查看详情

charles重装/移植---保持配置和证书不变(代码片段)

...;主要怕兼容问题或则其他干扰。(如果在没有记录(没安装过或已全部清除),则安装时候会随机生成证书,所以一定需要提前放到固定(默认)目录;如果不确定,就装2遍。)ca目录:bl??~??.charles??ca??ls-all总用量20d... 查看详情

32163165(代码片段)

《2.uboot和系统移植-第17部分-2.17.内核的移植1-从三星官方内核开始移植》 欢迎访问《朱老师物联网大讲堂》官方网站 www.zhulaoshi.org 以获取本课程更多信息第一部分、章节目录2.17.1.内核移植初体验2.17.2.初步移植以看到启动... 查看详情

从0移植uboot_配置分析(代码片段)

.../www.linuxidc.com/Linux/2017-02/141018.htm 和绝大多数源码编译安装一样,uboot的编译流程也类似于"makeconfig->make->makeinstall"**三步,只是由于uboot本身是针对多种平台的bootloader,软件的复杂性和 查看详情

嵌入式linux应用初步移植mqtt到ubuntu和linux开发板(代码片段)

1.概述​本篇主要是记录将MQTT移植安装到百问网STM32MP157开发板上,并且是跑一下MQTT的一个例程来验证,要完成本次移植安装,必须要保证电脑和开发板都能上网。。2.软件平台​本次使用的是Ubuntu18.04,是由百问... 查看详情

emscripten教程之代码可移植性与限制(代码片段)

Emscripten教程之代码可移植性与限制(一)翻译:云荒杯倾本文是Emscripten-WebAssembly专栏系列文章之一,更多文章请查看专栏。也可以去作者的博客阅读文章。欢迎加入Wasm和emscripten技术交流群,群聊号码:939206522。Emscripten代码移... 查看详情

apollo移植(代码片段)

Apollo移植环境平台ubuntu16.04Apollo_kernel1.0安装步骤步骤步骤一:安装ubuntu(官方建议使用Ubuntu14.04.3)步骤一和步骤二参考文档路径启动软件更新程序终端中执行下面的命令(新机需要更换Ubuntu的下载源,详细步骤见https://www.cnblogs.com/... 查看详情

cwmp开源代码研究——cwmp移植(代码片段)

原创作品,转载请注明出处,严禁非法转载。如有错误,请留言!email:[email protected]声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的。如有任何问题,欢迎和我交流。(企鹅号:408797506)本篇用到的文件包... 查看详情

linuxqt5移植到linuxarm(代码片段)

...环境6.移植过程遇到的问题相关文章《【TOOLS】ubuntu如何安装QtCreator》1.前言QT是一种跨平台C++图形用户界面应用程序开发框 查看详情

2内核的配置和移植(代码片段)

...有三种:第一种是kernel.org上的官方版本,第二种是三星移植过的,第三种是九鼎X210的移植版本。我们讲课时使用第三种内核来讲解,后面的移植实验使用第二种内核来移植。源码在开发板光盘中有。可以自己去linux下解压然后ma... 查看详情

docker的简介安装以及常用命令(代码片段)

docker的简介、安装以及常用命令一、docker是什么docker是一个开源的应用容器引擎,基于go语言,开发者可以打包他们的应用以及依赖到一个可移植的容器中,这个容器可以发布到任何装有docker软件的linux机器上。docker有4个组成部... 查看详情

linux系统移植:内核获取和编译(代码片段)

文章目录Linux系统移植:内核获取和编译一、获取Linux内核二、Linux内核编译Linux系统移植:内核获取和编译一、获取Linux内核Linux由Linux基金会管理与发布,Linux官网为https://www.kernel.org,选取合适的版本来使用就行... 查看详情

嵌入式linux应用初步移植mqtt到ubuntu和linux开发板(代码片段)

1.概述​本篇主要是记录将MQTT移植安装到百问网STM32MP157开发板上,并且是跑一下MQTT的一个例程来验证,要完成本次移植安装,必须要保证电脑和开发板都能上网。。2.软件平台​本次使用的是Ubuntu18.04,是由百问... 查看详情

如何使python可移植?

...的应用程序,它有一些代码和python可执行文件,即使没有安装python,也可以在任何Windows上运行。我希望它是python3.6,所以它只安装了pip和setuptools。编辑:关于重复不完全是。我不想编译代码。我想给他们.py文件,但意识到Windows 查看详情