(我在 Ubuntu 上)我正在尝试运行 PortAudio 示例,但遇到很多错误(如下所述)。我已经把头文件portaudio.h 放在了程序的目录下。我不知道。我认为这是链接器错误。请帮忙!
/tmp/cc5EbTlT.o: 在函数main':
paex_record.c:(.text+0x37e): undefined reference toPa_Initialize' paex_record.c:(.text+0x397): 未定义引用Pa_GetDefaultInputDevice'
paex_record.c:(.text+0x3de): undefined reference toPa_GetDeviceInfo' paex_record.c:(.text+0x436): 未定义引用Pa_OpenStream'
paex_record.c:(.text+0x45a): undefined reference toPa_StartStream' paex_record.c:(.text +0x493): 未定义引用Pa_Sleep'
paex_record.c:(.text+0x4c2): undefined reference toPa_IsStreamActive' paex_record.c:(.text+0x4eb): 未定义引用Pa_CloseStream'
paex_record.c:(.text+0x5fa): undefined reference toPa_GetDefaultOutputDevice' paex_record.c:(.text+0x641): 未定义引用Pa_GetDeviceInfo'
paex_record.c:(.text+0x6b2): undefined reference toPa_OpenStream' paex_record.c:(.text+0x6e3) ): 未定义引用Pa_StartStream'
paex_record.c:(.text+0x71c): undefined reference toPa_Sleep' paex_record.c:(.text+0x728): 未定义引用Pa_IsStreamActive'
paex_record.c:(.text+0x74e): undefined reference toPa_CloseStream' paex_record.c:(.text+0x77d): 未定义引用Pa_Terminate'
paex_record.c:(.text+0x7e5): undefined reference toPa_GetErrorText' collect2: 错误: ld 返回 1 退出状态
假设您正在使用 gcc 进行编译并且您有一个 C 文件foo.c,则编译器命令将是
gcc -o foo foo.c -lrt -lasound -ljack -lpthread -lportaudio
Run Code Online (Sandbox Code Playgroud)
这些-l参数用于将所需的库链接到您的程序,例如-lrtwill link 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
Run Code Online (Sandbox Code Playgroud)
关于标头,您实际上不需要将其复制到程序的目录中。你宁愿将其包含为
#include <portaudio.h>
Run Code Online (Sandbox Code Playgroud)
并将其目录添加到包含搜索路径:
gcc -I/usr/include -L/usr/lib -o foo foo.c -lrt -lasound -ljack -lpthread -lportaudio
Run Code Online (Sandbox Code Playgroud)
当然,所有这些最好在 Makefile 中完成。
| 归档时间: |
|
| 查看次数: |
3171 次 |
| 最近记录: |