使用GCC编译独立文件时如何正确链接libsndfile库
解决libsndfile外部编译make_sine.c的问题
问题原因
你遇到的链接错误分两类:
- 未链接libsndfile库:
sf_open、sf_close等函数属于libsndfile库,编译时需要显式指定链接该库 - 未链接数学库:
sin函数属于标准数学库libm,GCC不会自动链接这个库,必须手动指定
正确编译命令
使用以下命令即可成功编译:
gcc make_sine.c -lsndfile -lm
编译完成后,运行生成的默认可执行文件即可生成WAV文件:
./a.out
补充说明
如果后续使用自己编译的libsndfile版本(而非apt安装的),需要额外指定库的安装路径。比如你的libsndfile编译后安装在/usr/local/lib,则命令应为:
gcc make_sine.c -L/usr/local/lib -lsndfile -lm
内容的提问来源于stack exchange,提问作者James T. Kirk
相关产品推荐
相关产品推荐

