嵌入式 ALSA库的编译、使用、移植

时间:2024-03-21 13:16:57

 嵌入式 ALSA库的编译、使用、移植

一、简述

       记--编译开源音视频ALSA库、简单使用、移植ALSA库到开发板。

       ALSA库源码:链接: https://pan.baidu.com/s/1mThb6vAqXCOI46z0w-A-fA 提取码: hj9r 

      已经编译好的:

      Ubuntu (x86)下使用:链接: https://pan.baidu.com/s/12YmHBLJIrtSWA31nW0_ujA 提取码: 8gyv 

      开发板(arm)下使用:链接: https://pan.baidu.com/s/1dYiEQF-MC2nvU5zPJlLA1g 提取码: mz3g 

      测试代码:链接: https://pan.baidu.com/s/1jlwNcBvj1wD8XvhSAxTD1g 提取码: py9a

      蓝奏:https://www.lanzous.com/b514084/         密码:i7c1

二、ALSA库的编译

       2.1 下载ALSA库源码:ftp://ftp.alsa-project.org/pub/lib/  

                嵌入式 ALSA库的编译、使用、移植   

       2.2 解压:tar -xjvf alsa-lib-1.1.7.tar.bz2嵌入式 ALSA库的编译、使用、移植

嵌入式 ALSA库的编译、使用、移植

       2.3 创建一个目录:mkdir alsa

             嵌入式 ALSA库的编译、使用、移植

       2.4 检查、配置、编译、生成库文件

             a) 进入解压出来的目录:cd alsa-lib-1.1.7/

                 嵌入式 ALSA库的编译、使用、移植

            b) 检查文件,生成Makefile:./configure  --prefix=/home/liang/alsa

                 嵌入式 ALSA库的编译、使用、移植

                 嵌入式 ALSA库的编译、使用、移植

           c) 编译:make

                 嵌入式 ALSA库的编译、使用、移植

                 嵌入式 ALSA库的编译、使用、移植

          d) 生成ALSA库:sudo make install

                嵌入式 ALSA库的编译、使用、移植

                嵌入式 ALSA库的编译、使用、移植

           e) 查看生成的库文件等

                 嵌入式 ALSA库的编译、使用、移植

       2.5 使用库文件编译代码:gcc alsa_record.c -o alsa_record -L/home/liang/alsa/lib -lasound -lpthread嵌入式 ALSA库的编译、使用、移植

            注:如果运行时提示找不到xxx库文件,需要将生成的lib路径下的库文件拷贝到/lib下或/usr/lib下。也可以时将生成的库添加到环境变量。

          2.6 让运行的程序能够找到ALSA库

                        方式1:将ALSA的库文件放到 /lib 路径下

cp /home/liang/alsa/lib/libasound.so* /lib

                        方式2:将ALSA的库文件所在的路径添加到 链接库的环境变量(默认的库文件寻找路径)

export LD_LIBRARY_PATH=/home/liang/alsa/lib/:$LD_LIBRARY_PATH

 

三、移植ALSA库到开发板

       说明:

          1) 如果之前已经执行步骤二的命令./configure ...make...,需要将之前生成的Makefile等配置文件清除,因为之前的实在Ubuntu使用,环境时x86架构的。开发板是arm架构的,所以要清除之前的配置文件,防止冲突。

        执行清除命令,进入加压的目录执行:make clean

        嵌入式 ALSA库的编译、使用、移植

       或者是删除之前解压出来的文件,重新解压。删除之前的文件:

       嵌入式 ALSA库的编译、使用、移植

       2) 如果没有arm交叉编译工具链的要预先进行安装。

       3) 如果没有/opt/alsa目录的需要进行创建:sudo mkdir /opt/alsa

            嵌入式 ALSA库的编译、使用、移植

  3.1 进入解压出来的目录依次执行以下三个命令:

./configure --host=arm-none-linux-gnueabi --prefix=/opt/alsa
make
make install

 

        嵌入式 ALSA库的编译、使用、移植

        嵌入式 ALSA库的编译、使用、移植

        嵌入式 ALSA库的编译、使用、移植

        查看生成的库文件:

        嵌入式 ALSA库的编译、使用、移植

   4 、 将/opt/alsa的所有文件传输到开发板相应的目录/opt/alsa。(可以打包为压缩文件再进行传输,防止连接文件异常)

           注:配置什么目录就要放在相应的目录,否则程序运行时会找不到相关文件。

           例子中使用nfs挂载方式直接将/opt/alsa拷贝到开发板的根目录下。

            也可以先压缩再传输,压缩文件:tar -cjvf alsa_arm.tar.bz2 /opt/alsa

            嵌入式 ALSA库的编译、使用、移植

              嵌入式 ALSA库的编译、使用、移植

                嵌入式 ALSA库的编译、使用、移植

                 嵌入式 ALSA库的编译、使用、移植

   5、  并将opt/alsa/lib所有库文件拷贝到/lib下:cp /opt/alsa/lib/libasound*.so /lib

            嵌入式 ALSA库的编译、使用、移植

           或者是添加到环境变量:

export LD_LIBRARY_PATH=/opt/alsa/lib:$LD_LIBRARY_PATH

            嵌入式 ALSA库的编译、使用、移植

   6、在Ubuntu使用交叉编译工具编译程序

arm-linux-gcc alsa_record.c -o record -I /opt/alsa/include/ -L /opt/alsa/lib/ -lasound -lpthread

 嵌入式 ALSA库的编译、使用、移植

         将可执行文件传输到开发板,添加可执行权限,执行。

               嵌入式 ALSA库的编译、使用、移植

 

注:在命令行设置环境变量,重启开发板会失效。

        可以将它写入到/etc/profile文件。(开机执行文件)

export LD_LIBRARY_PATH=/opt/alsa/lib:$LD_LIBRARY_PATH

 嵌入式 ALSA库的编译、使用、移植       嵌入式 ALSA库的编译、使用、移植