Qt编译ALSA音频示例代码时出现"undefined reference to"错误求助
解决Qt编译ALSA代码时的"undefined reference to"错误
你遇到的这个undefined reference错误,本质是链接阶段的问题——编译器已经找到了ALSA的头文件(所以没有编译语法错误),但链接器找不到实现这些ALSA函数的库文件。ALSA的API实现都在libasound.so里,我们需要明确告诉Qt的构建系统去链接这个库。
下面分两种常见的Qt构建工具给出具体解决方案:
1. 若使用qmake(.pro项目)
打开你的项目根目录下的.pro文件,添加一行链接配置:
LIBS += -lasound
保存后,先执行qmake(Qt Creator里可以右键项目选择"qmake"选项),再重新构建项目,链接错误就应该消失了。
2. 若使用CMake(CMakeLists.txt项目)
找到CMakeLists.txt中的target_link_libraries语句,将asound库添加到依赖列表中,示例如下:
target_link_libraries(你的项目名称 PRIVATE asound)
完成后重新加载CMake配置,再执行构建操作即可。
额外优化提示:
你的代码里可以简化头文件引用:<alsa/asoundlib.h>已经包含了pcm相关的所有定义,不需要单独写#include </usr/include/alsa/pcm.h>,直接保留前者即可。
内容的提问来源于stack exchange,提问作者slole




