编译PortAudio示例

时间:2015-10-06 14:39:38

标签: c portaudio

(我在Ubuntu上)我正在尝试运行PortAudio示例,但是遇到了很多错误(如下所述)。我已将头文件portaudio.h放在程序目录中。我不知道。我认为这是链接器错误。请帮忙!

/tmp/cc5EbTlT.o:在函数main': paex_record.c:(.text+0x37e): undefined reference to Pa_Initialize'中 paex_record.c :(。text + 0x397):对Pa_GetDefaultInputDevice' paex_record.c:(.text+0x3de): undefined reference to Pa_GetDeviceInfo'的未定义引用 paex_record.c :(。text + 0x436):未定义引用Pa_OpenStream' paex_record.c:(.text+0x45a): undefined reference to Pa_StartStream' paex_record.c :(。text + 0x493):未定义引用Pa_Sleep' paex_record.c:(.text+0x4c2): undefined reference to Pa_IsStreamActive' paex_record.c :(。text + 0x4eb):对Pa_CloseStream' paex_record.c:(.text+0x5fa): undefined reference to Pa_GetDefaultOutputDevice'的未定义引用 paex_record.c :(。text + 0x641):未定义引用Pa_GetDeviceInfo' paex_record.c:(.text+0x6b2): undefined reference to Pa_OpenStream' paex_record.c :(。text + 0x6e3):对Pa_StartStream' paex_record.c:(.text+0x71c): undefined reference to Pa_Sleep'的未定义引用 paex_record.c :(。text + 0x728):未定义引用Pa_IsStreamActive' paex_record.c:(.text+0x74e): undefined reference to Pa_CloseStream' paex_record.c :(。text + 0x77d):未定义引用Pa_Terminate' paex_record.c:(.text+0x7e5): undefined reference to Pa_GetErrorText' collect2:错误:ld返回1退出状态

1 个答案:

答案 0 :(得分:1)

假设您正在使用gcc编译并且您有一个C文件foo.c,编译器命令将是

gcc -o foo foo.c -lrt -lasound -ljack -lpthread -lportaudio

-l参数用于将所需的库链接到您的程序,例如-lrt会链接librt.a。订单很重要。

我从这里获得了所需的库:http://www.portaudio.com/docs/v19-doxydocs/compile_linux.html#comp_linux3。不知道他们是否正确。至少你需要-lportaudio,显然。

如果找不到库,则必须提供gcc路径,例如

gcc -L/usr/lib -o foo foo.c -lrt -lasound -ljack -lpthread -lportaudio

关于标题,您实际上不需要将其复制到程序的目录中。你宁愿把它包含在

#include <portaudio.h>

并将其目录添加到包含搜索路径:

gcc -I/usr/include -L/usr/lib -o foo foo.c -lrt -lasound -ljack -lpthread -lportaudio

当然,在Makefile中做得更好。