ALSA install

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

0. 前言

本文主要介绍alsa-lib和alsa-utils的编译安装。

1. 前期准备

安装依赖包

sudo apt-get install xmlto
sudo apt-get install libncurses5-dev

创建目录结构

.
├── out
│   ├── alsa-lib                    # alsa-lib 的编译目录
│   ├── alsa-utils                  # alsa-utlis 的编译目录
│   └── install
└── source                          # 源码路径
    ├── alsa-lib-1.1.4.1
    └── alsa-utils-1.1.4

install目录为文件的最终安装位置,包括所有的动态库,配置文件和可执行文件等。

2. 安装

alsa-lib

在out/alsa-lib目录下使用如下命令:

install_path=`pwd`/../install
./../../source/alsa-lib-1.1.4.1/configure --prefix="$install_path"
make all
make install

alsa-utils

在out/alsa-utils目录下使用如下命令:

install_path=`pwd`/../install
./../../source/alsa-utils-1.1.4/configure --prefix="$install_path" --with-systemdsystemunitdir="$install_path/utils/lib/systemd/system" --with-udev-rules-dir="$install_path/utils/lib/udev/rules.d/" --with-curses=ncurses --with-alsa-prefix="$install_path/lib" --with-alsa-inc-prefix="$install_path/include" CFLAGS="-Wl,-rpath,$install_path/lib"
make all
make install

3. 验证

验证patch

使用上面的patch稍稍修改了下版本号的打印内容,然后我们使用aplay –version可以看见lib和utils都修改成功了。

$ ./aplay --version
aplay: version 1.1.4 by Jaroslav Kysela <[email protected]>
aplay: lib version 1.1.4.1 14:49:17

4. 关于动态库路径

在配置configure时,最早我没有使用 -Wl,-rpath,$install_path/lib 参数,当时发现utils使用的lib文件为系统默认的lib文件。造成这个问题的原因是没有指定动态链接库的搜索路径。

对于该配置, -Wl, 表示后面的参数传给链接器ld,可以通过 -rpath 指定动态库的搜索路径,当需要配置多个搜索路径时可以连续使用: -Wl,-rpath,path1,-rpath,path2,-rpath,path3…

关于动态链接库路径的搜索顺序可以参见文章:gcc指定头文件路径及动态链接库路径,在此对该顺序的总结如下:

  1. 搜索编译目标代码时指定的动态库搜索路径
  2. 搜索环境变量LD_LIBRARY_PATH指定的动态库搜索路径
  3. 搜索配置文件/etc/ld.so.conf中指定的动态库搜索路径
  4. 搜索默认的动态库搜索路径/lib
  5. 搜索默认的动态库搜索路径/usr/lib

另外,我们也可以使用ldd命令检查我们使用的动态链接库的位置是否正确:

$ ldd aplay
    ...
    libasound.so.2 => /home/pengfei24/Workspace/ALSA/out/alsa-utils/../install/lib/libasound.so.2 (0x00007fe8ec0c9000)
    ...

猜你喜欢

转载自blog.csdn.net/pengfei240/article/details/78226935