码迷,mamicode.com
首页 > 其他好文 > 详细

undefined reference to `snd_pcm_open'

时间:2015-02-15 06:11:32      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:alsa   lib   undefine   链接   

这几天在做一个局域网的对讲机和广播系统。

需要用到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,所以也将最终保存下来。

(由于时间关系我没有再深入了解,更多的资料请自行查阅)

undefined reference to `snd_pcm_open'

标签:alsa   lib   undefine   链接   

原文地址:http://blog.csdn.net/fish43237/article/details/43830403

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!