ALSA install

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 <perex@perex.cz>
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)
    ...
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值