LSHKIT库源码编译

最近在研究LSH(局部敏感哈希,local sensitive hash),在海量数据检索中是一个很有效的方法。在音乐检索、图片检索中有着广泛的应用。网上有一个非常好的开源的工具包LSHKIT,大牛们写好了省的我们自己再编写,而且从它的源码中可以学到很多。源码主页在这里http://lshkit.sourceforge.net/


编译这个源码花了我一整天的时间,现在将过程记录之。

我的电脑配置:64位win7, 64位VS2010


步骤一:其它依赖库编译

1. 首先你的电脑需要编译好boost库,配置见这篇博文http://blog.csdn.net/dupei/article/details/6110153

2. 还需要编译gsl数学库,见这篇博文http://www.cnblogs.com/suda/archive/2012/03/03/2378644.html

(以上两个库比较常用,我之前就已经编译好了)


步骤二:编译准备

3. 下载cmake,这是一个跨平台编译的工具,无论是windows还是linux系统,用cmake都会生成相应的工程文件。我是VS2010下,所以运行cmake后会生成.sln工程文件。下面讲具体步骤。

(1)新建一个文件夹,如%GSL_ROOT_DIR%, 把gsl的include文件夹和编译好的lib文件夹放进去(lib文件一定要注意是64位or32位,Debug or Release, 否则会出链接错误)

(2)把LSHKIT中的FindGSL.cmake复制到cmake文件夹中的share/cmake-xxx/Modules中。这样能使得cmake时候找到gsl路径。

(3)新建一个文件夹,如%BOOST_DIR%, 把boost中的include文件夹和编译好的lib文件夹放进去(lib文件一定要注意是64位or32位,Debug or Release, 否则会出链接错误)

(说明,你会发现在cmake文件夹中的share/cmake-xxx/Modules中发现FindBoost.cmake)

(4)把%GSL_ROOT_DIR%; %BOOST_DIR%; %BOOST_DIR%\include; %BOOST_DIR%\lib; 添加为环境变量(我之前按照官网说明,没添加\include和\lib,导致出错)


步骤三:编译LSHKIT库

下面开始生成。LSHKIT中的src和tools需要分两次生成不同的工程文件(你会发现src和tools文件夹中各有一个CMakeLists.txt,即是此意)

(1)打开cmake-gui.exe,"where is the source code"选择%LSHKIT_DIR%\src,"where to build the binaries"选择你想要存放工程的文件夹

(2)点Configure按钮,选择目标编译环境,我选的是Visual Studio 10 2010 Win64,如果您是不同的编译环境,请相应选择。点Finish。

(3)点Generate按钮,生成了很多文件,包含Project.sln工程。

(4)打开Project.sln工程,项目->属性->配置管理器,选好Release还是Debug。

(5)把lshkit库和gsl库的头文件拷过来,路径配好。编译。

(6)编译会有一些错误,如下

1)提示M_PI未定义错误,解决:在spectral-hash.h中添加 #define M_PI       3.14159265358979323846

2)提示无法找到values.h,解决:用float.h替代。

3)kdtree.c会报上一堆错,解决:右击解决方案资源管理器中kdtree.c属性,编译为一项改为"编译为C++代码(/TP)"

(7)再编译通过。若出现链接错误,请检查gsl.lib与工程的Release or Debug是否一致、32位 or 64位是否一致;或是否成功添加了.lib文件。这时生成了lshkit.lib。编译完毕。


步骤四:调用LSHKIT库

LSHKIT文件夹中tools中的cpp文件是调用lshkit.lib的一些示例。下面这些文件的编译方法。

(1)打开cmake-gui.exe,"where is the source code"选择%LSHKIT_DIR%\tools,"where to build the binaries"选择你想要存放工程的文件夹

(2)同步骤三(2),出现warning不必理会。

(3)同步骤三(3)

(4)同步骤三(4)

(5)以编译apost-run子工程为例。把lshkit库头文件拷过来,路径配好。

(6)把gsl库的lib,lshkit.lib,boost库中program_options的lib拷过来,路径配好。

(7)编译通过。若出现链接错误,请检查gsl.lib与工程的Release or Debug是否一致、32位 or 64位是否一致;或是否成功添加了.lib文件。

若编译成功的话,恭喜!大功告成!


官网上有audio.tar.gz数据可供测试。


参考:

http://lshkit.sourceforge.net/index.html(官网说明)

http://blog.sina.com.cn/s/blog_682b828701017h3l.html(博友配置笔记)

http://blog.csdn.net/lxhlong/article/details/8049712(博友配置笔记)

http://blog.sina.com.cn/s/blog_5f2c831b0100tklb.html(博友配置及学习笔记)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值