当前位置: 首页 > 工具软件 > tr069-lib > 使用案例 >

交叉编译安装alsa_lib和alsa_utils以及基本使用

汝志
2023-12-01

 

交叉编译安装alsa_lib和alsa_utils以及基本使用

交叉编译alsa_lib

A、环境

系统:Ubuntu16.04 64bit

交叉编译器:arm-linux-gnueabi

alsa_lib库版本:alsa-lib-1.1.8.tar.bz2

(下载路径:https://www.alsa-project.org/wiki/Main_Page

B、交叉编译安装

  1. 将下载的压缩包放入ubuntu系统中,tar xf alsa-lib-1.1.8.tar.bz2;
  2. cd alsa-li-1.1.8/
  3. 配置生成makefile,终端输入:

./configure --host=arm-linux-gnueabi --prefix=$PWD/_install --enable-shared --disable-python CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ LD=arm-linux-gnueabi-ld   

或者执行脚本

./configure \

--host=arm-linux-gnueabi \

--prefix=$PWD/_install \

--enable-shared \

--disable-python \

CC=arm-linux-gnueabi-gcc \

CXX=arm-linux-gnueabi-g++ \

LD=arm-linux-gnueabi-ld   

                   配置解释如下:

1)一般在makefile时,部分程序会首先执行配置文件进行配置,然后再生成makefile文件,注意不同工程的配置方案并不相同,这些命令不一定在其他配置文件中也能使用;

2)--host:为使用的交叉编译工具名,直接使用arm-linux也可以,根据PC上安装的交叉编译工具来决定;

3)--prefix:即makeinstall时程序安装的目录,可以根据自己的情况进行修改,不用拘泥;

4)--enable:开启功能 --disable:关闭功能;

5)--with-configdir:alsa.conf文件安装路径,默认值是--prefix指定的路径值/share/alsa/,本目录要定好位置,交叉编译过后,移植到板子上时要和PC上路径一致,默认alsa配置文件会在安装目录里,这个配置对应include/config.h中ALSA_CONFIG_DIR的值;

6)--with-plugindir:如果需要自定义include/config.h中ALSA_PLUGIN_DIR的值,可通过参数--with-plugindir指定,即smixer的安装路径,默认值是--prefix指定的路径值/lib/alsa-lib/ ,alsa_lib所在目录,目前意义不明,可以自由定位,也可以默认安装,用的不多;

7)CC,CXX,LD:我单独加的,即配置生成的makefile文件中的编译工具为这几项;

8)注意: --with-alsa-devdir 指定音频设备的目录。(pcmC0D0c/pcmC0D0p/pcmC0D1p等)alsa_lib 默认到/dev/snd找这些音频设备,但有时候创建音频设备并不在/dev/snd里,而是在/dev/里或者其它目录里,这就需要指定目录,不然会提示找不到pcmCxDx 。

  1. 编译make;
  2. sudo mak install;
  3. 完成交叉编译安装,在--preix=$PWD/_install路径下可看到安装生成的文件夹。

C、移植alsa至arm板

alsa-lib编译安装完成之后,进行如下操作:

  1. 将参数--prefix指定的路径值/lib下的动态库文件移植到rm linux系统的文件系统的/usr/lib/目录中;
  2. 将--with-configdir指定的目录的所有内容(主要是alsa.conf)移植到arm linux系统的文件系统中的相同的目录路径中,我这里是_install/share/alsa文件夹下;
  3. 其它内容可以移植,也快以不移植,但是如果移植,那么它们在arm linux系统中的目录路径必须和其在p机上的安装路径相同。

交叉编译alsa_utils

A、环境

系统:Ubuntu16.04 64bit

交叉编译器:arm-linux-gnueabi

alsa_lib库版本:alsa-utils-1.1.8.tar.bz2

(下载路径:https://www.alsa-project.org/wiki/Main_Page

B、交叉编译安装

  1. 将下载的压缩包放入ubuntu系统中,tr xf alsa-utils-1.1.8.tar.bz2;

cd alsa-utils-1.1.8/

  1. 配置生成makefile,终端输入或者执行脚本:

./configure \

--host=arm-linux-gnueabi \

--prefix=$PWD/_install \

CFLAGS="-I /home/iflytek-dyye/work/txd33/tools/alsa/alsa-lib-1.1.8/_install/include" \

LDFLAGS="-L /home/iflytek-dyye/work/txd33/tools/alsa/alsa-lib-1.1.8/_install/lib -lasound" \

--disable-alsamixer \

--disable-xmlto \

--with-alsa-inc-prefix=/home/iflytek-dyye/work/txd33/tools/alsa/alsa-lib-1.1.8/_install/include \

--with-alsa-prefix=/home/iflytek-dyye/work/txd33/tools/alsa/alsa-lib-1.1.8/_install/lib \

CC=arm-linux-gnueabi-gcc \

CXX=arm-linux-gnueabi-g++ \

LD=arm-linux-gnueabi-ld

配置解释如下:

1 ) --host 指定编译器,与 lib 的配置选项相同;

2 ) --prefix 指定编译后文件的安装路径,与 lib 的配置选项相同;

3 ) CFLAGS 用于编译时指定的编译选项,在这里将利用 lib 编译后生成的头文件,因此指定为该头文件所在目录;

4 ) LDFLAGS 用于编译时指定连接库文件,与 CFLAGS 同样状况,将 lib 编译生成的库文件指定出来;

5 ) --with-alsa-inc-prefix 指定头文件目录,这个与 3) 类似,但必须指定,因为 Configure 程序会去该目录检查版本情况。如果不指定的话,则会直接去默认目录 ( 即宿主机对应的 alsalib 目录中寻找,因此可能会有错误 )。

  1. 编译make;
  2. suo make install;
  3. 完成交叉编译安装,在--prfix=$PWD/_install路径下可看到安装生成的文件夹。

C、移植

完成编译安装后,移植步骤如下:

(1)  将参数--prefix指定的路径值/bin/目录中的文件移植到arm linux系统中的/usr/bin或其它目录中,如果移植到其它目录中,则需要将该目录添加到环境变量PATH指的执行路径中;

(2)  将参数--prefix指定的路径值/sbin/目录中的文件移植到arm linux系统中的/usr/bin或其它目录中,如果移植到其它目录中,则需要将该目录添加到环境变量PATH指的执行路径中;

(3)  参数--prefix指定的路径值/share/目录中的内容可以移植也可以不移植,如果移植,则移植到arm linux系统中的目录路径和其在pc中的安装路径相同。

需要注意/dev/snd/ 目录中,此目录下应包含以下几个设备文件 ( 驱动 ) , controlC0, pcmC0D0c, pcmC0D0p, timer,如果没有,需要手动创建,方法如下:

mkdir /dev/snd

mknod /dev/snd/controlC0 c 116 0

mknod /dev/snd/pcmC0D0p c 116 16

mknod /dev/snd/pcmC0D0c c 116 24

mknod /dev/snd/seq c 116 1

mknod /dev/snd/hwC0D0 c 116 4

mknod /dev/snd/timer c 116 33

可以通过cat /proc/asound/devices,正常会看到一些设备来决定创建哪些设备节点。

0: [ 0] : control

16: [ 0- 0]: digital audio playback

24: [ 0- 0]: digital audio capture

33: : timer

D、测试

详见https://blog.csdn.net/sinat_35706094/article/details/87621498

参考

https://blog.csdn.net/yuanxinfei920/article/details/52954941

https://blog.csdn.net/luckywang1103/article/details/45626201

https://blog.csdn.net/kunkliu/article/details/80434627

https://blog.csdn.net/ropenyuan/article/details/8078100

https://blog.csdn.net/cean1024/article/details/52247807

https://www.alsa-project.org/wiki/Main_Page

 

 类似资料: