linux ——libsndfile1-dev库移植至嵌入式arm

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014470361/article/details/84947962

前言

libsndfile 是一款开源的音频编解码库,可以进行一些常见的音频格式转换、音频文件拼接、单声道合成为立体声、立体声拆分为单声道等功能。本文将对libsndfile库移植至嵌入式arm进行一些介绍。
软件平台:ubuntu 16.04
移植库:libsndfile1-dev
硬件平台:zedboard开发板(arm)

获取源码

sudo apt-get source libsndfile1-dev

在这里插入图片描述
如果未安装dpkg指令,则获取的源码不会被自动解压,需要下载安装dkpg指令手动解压。

dpkg-source  -x libsndfile_1.0.25-10ubuntu0.16.04.1.dsc

在这里插入图片描述
若已安装dpkg指令,下载源码的时候会自动解压到对应文件夹。

交叉编译

(1) ./configure
./configure -prefix=/home/test/tts-arm/libsndfile --host=arm-linux --target=arm CC=/opt/Xilinx/SDK/2015.4/gnu/arm/lin/bin/arm-xilinx-linux-gnueabi-gcc --disable-external-libs --enable-alsa LDFLAGS="-L/usr/local/arm-alsa/lib" CPPFLAGS="-I/usr/local/arm-alsa/include"

CC是交叉编译工具的绝对路径;
–disable-external-libs是关闭一些外部库,没有这一项会报FLAC库相关的错误;
–enable-alsa是开启alsa库;
LDFLAGS和CPPFLAGS与之前als库移植的路径一致,后面移植到arm开发板上是需要使用alsa库的,alsa库的移植见:传送门
在这里插入图片描述
若直接进行编译安装,移植至开发板运行会报如下错:

sndfile.c 313 assert  'sizeof (sf_count_t) == 8 '  failed!

由于我们是在arm开发板上运行,其为32位,将sndfile.c源文件313行的判断屏蔽,// assert (sizeof (sf_count_t) == 8) ;也可加入printf打印语句进行测试。

SNDFILE*
sf_open	(const char *path, int mode, SF_INFO *sfinfo)
{	SF_PRIVATE 	*psf ;

	/* Ultimate sanity check. */
	printf("sizeof (sf_count_t) =%d",sizeof (sf_count_t));
//	assert (sizeof (sf_count_t) == 8) ;

	if ((psf = calloc (1, sizeof (SF_PRIVATE))) == NULL)
	{	sf_errno = SFE_MALLOC_FAILED ;
		return	NULL ;
		} ;

	memset (psf, 0, sizeof (SF_PRIVATE)) ;
	psf_init_files (psf) ;

	psf_log_printf (psf, "File : %s\n", path) ;

	copy_filename (psf, path) ;

	psf->file.mode = mode ;
	if (strcmp (path, "-") == 0)
		psf->error = psf_set_stdio (psf) ;
	else
		psf->error = psf_fopen (psf) ;

	return psf_open_file (psf, sfinfo) ;
} /* sf_open */

(2)make
(3)sudo make insatall

移植测试

(1)将安装目录下的bin文件都拷贝至开发板的bin文件下;

cp -ra /home/test/tts-arm/libsndfile-1.0.25/bin/* /bin/

(2)将安装目录下的lib文件都拷贝至开发板的lib文件下;

cp -ra /home/test/tts-arm/libsndfile-1.0.25/lib/* /lib/

(3)指令使用和测试
arm-sndfile-info可以查看音频文件的信息。

 arm-sndfile-info Front_Center.wav

在这里插入图片描述
使用arm-sndfile-play可以进行音频文件的播放。测试成功调用了alsa库实现了音频播放。
在这里插入图片描述
至此,libsndfile1-dev库已成功移植至嵌入式arm开发板。

附件(apt-get 获取源码、安装下载、更新软件包等常用命令)

sudo apt-get install package                    安装软件包
sudo apt-get install package - - reinstall 重新安装软件包
sudo apt-get -f install                                修复安装软件包"-f = ——fix-missing"
sudo apt-get remove package                  删除软件包
sudo apt-get remove package - - purge  删除软件包,包括删除配置文件等
sudo apt-get update                                  更新源及/etc/apt/sources.list
sudo apt-get upgrade                                更新已安装的软件包
sudo apt-get dist-upgrade       升级系统安装的软件包
sudo apt-get dselect-upgrade 使用 dselect 升级
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get clean && sudo apt-get autoclean 清理无用的软件包
sudo apt-get check                 检查是否有损坏的依赖
apt-cache search package     搜索软件包
apt-cache show package       获取包的相关信息,如说明、大小、版本等
apt-cache depends package 了解使用依赖
apt-cache rdepends package是查看该软件包被哪些软件包依赖

猜你喜欢

转载自blog.csdn.net/u014470361/article/details/84947962
今日推荐