最近做的一个项目需要读写 wav 文件。在网上找到 libsndfile 刚好满足我的需要。
但是编译的时候遇到了点小麻烦,这里记录一下编译的过程,免得下次再编译时忘记了。
因为是在编译完成若干天后写的,有些细节可能不一定准确。
libsndfile 是一个 C 语言写成的 开放源代码的音频文件读写的库。可以读写 WAV 格式,FLAC 格式和其他许多常见格式(因为专利原因不支持MP3)。LGPL 协议。
如果只是用 libsndfile 读写标准的 PCM 编码的 wav 文件,那就很简单。
只要有 MSYS,
./configure
make
make install
就行了。
如果想编译完全了。就需要有 libflac libogg 和 libvorbis
还需要有 pkg-config ,否则 libsndfile 找不到 libflac libogg 和 libvorbis
不过 pkg-config 依赖于 glib ,所以直接在 MSYS 上编译 pkg-config 是无法编译通过的。
我的办法是找了个 pkg-config 的替代品 pkg-config-lite
pkg-config-lite 的主页在
http://sourceforge.net/projects/pkgconfiglite/
pkg-config-lite 移除了pkg-config 对 glib 的依赖关系。精简了不少。
pkg-config-lite、libogg 和 libvorbis 编译没什么困难。
./configure
make
make install
libflac 包含在在 flac 中。 我最开始找的是 flac-1.2.1。
编译时报了些错误,基本就是哪个函数没声明,缺少哪个宏定义一类的。改改源代码就可以编译了。
但是编译成功后却找不到 libflac.dll 文件。而 libsndfile 却必须要动态链接 libflac。。。
肯定是 Makefile 的问题,但是我水平不够不会改。只能想别的办法。
后来找到 flac-1.3.0 , 编译通过,libflac.dll 也有了。
最后编译 libsndfile 。 没遇到什么大问题。
至此,libsndfile 编译完成。
下一篇博客准备写写 libsndfile 的基本用法。