undefined reference to `snd_pcm_open'


关于本文更详细的内容,欢迎关注我的个人网站《程序员网》


这几天在做一个局域网的对讲机和广播系统。
需要用到alsa的库来进行音频采集和播放。

但是在编译程序的时候有个比较奇怪的问题。
undefined reference to `snd_pcm_open’
一般来说,这肯定是程序链接的时候,找不到链接库。
可我明明在gcc的参数里面加了 -lasound 选项。

后来发现,原来-lasound这个参数的位置会影响到编译的结果。

不能通过的写法:gcc -lasound -o main main.o
可以编译通过的写法:gcc -o main main.o -lasound

进一步查资料发现:
gcc中库的链接顺序是从右往左进行,所以要把最基础实现的库放在最后,这样左边的lib就可以调用右边的lib中的代码。同时,当一个函数的实现代码在多个lib都存在时,最左边的lib代码最后link,所以也将最终保存下来。
(由于时间关系我没有再深入了解,更多的资料请自行查阅)


关于本文更详细的内容,欢迎关注我的个人网站《程序员网》


IT从业人员需要及时关注技术动态,但是互联网的内容过于离散,好东西往往隐藏得很深。现在可以在微信公众号里面搜索关注“老鱼的IT技术分享”,订阅每天汇总的IT技术信息。欢迎大家关注!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值