其实我一开始只是想用homest的,结果发现homest需要levmar,而levmar需要CLAPACK
我一开始实在linux上装的,跌跌撞撞终于编译好了最后一个库homest,结果跑demo却出错了,错误如下:
查到src file也没看出究竟为啥错了!一晚上都不高兴,果断给库作者写了封邮件,作者很给力,第二天就给我回了,说可能是32bit和64bit的问题。。。 而且建议我windows
好吧,又是网上开始搜,先搜到这个网站
http://icl.cs.utk.edu/lapack-for-windows/clapack/index.html
首先下载 CLAPACK-EXAMPLE Visual Studio project, 我放到了E:/OPLIB/
然后下载blas.lib, libf2c.lib, lapack.lib,把这几个库放到上面那个project的lib文件夹下
用visual studio (我用的2010)打开这个project就能运行了!基本上说明CLAPACK已经装好!
下来到这个网站
http://users.ics.forth.gr/~lourakis/levmar/index.html
下载levmar-2.6,由于我们要用nmake编译,所以修改其中的Makefile.vc
LAPACKLIBS_PATH=E:OPLIBCLAPACK-EXAMPLECLAPACK-EXAMPLElib
LAPACKLIBS=lapack.lib blas.lib libf2c.lib
打开visual studio 2010的命令窗口 (run as administrator),进入到levmar/Makefile.vc 所在路径, 输入以下命令
nmake /f Makefile.vc
这是levmar的FAQ http://users.ics.forth.gr/~lourakis/levmar/faq.html
当我在linux下直接编译CLAPACK时,会出现 link error for sgemm/dgemm, 请参考其中的修改方法,
而如果跟我一样选择直接下载编译好的库,就不会出现类似错误了
最后一步啦,从 http://users.ics.forth.gr/~lourakis/homest/ 下载homest-1.4
同样修改 Makefile.vc
LEVMARHDR_PATH=E:OPLIBlevmar-2.6levmar-2.6
LEVMARLIB_PATH=E:OPLIBlevmar-2.6levmar-2.6
LAPACKLIBS_PATH=E:OPLIBCLAPACK-EXAMPLECLAPACK-EXAMPLElib
LIBS=levmar.lib lapack.lib blas.lib libf2c.lib
打开visual studio 2010命令窗口, 进入到homest-1.4/Makefile.vc, 输入以下命令
nmake /f Makefile.vc
编译好后,我们就可以运行以下demo
homest_demo test/matches.txt
homest_demo -a test/matches.txt
其实整个过程并不算复杂,但是由于版本比较混乱,网上各种答案都有,导致我试了很多次才找到能正确编译的方法~