利用cygwin编译cholmod以获得在windows上可用的库lib

时间:2022-09-06 01:52:14

原文http://blog.parlin.me/complie-cholmod-to-get-library-for-win64/

记录要点:

cygwin好好装,希望哪位神人能够提供一个好用的cygwin国内mirror。

编译cholmod的时候,跨平台编译链接选项要配套,都要x86_64-w64-ming32开头的(因为这是64位win7)。

cholmod之前要搞到lapack和blas,lapack之前要先搞blas。问题是blas用哪个?

blas.tgz? atlas? goto blas?

说一下流程吧:

1.假定下好了cygwin,改好.bat的配置。(反正你装不好cygwin就各种错,不是缺dll,就是少某个二进制文件,要不然就是少某个lib)

2.把从后面链接里面的SuiteSparse包扔到home来。

3.进去改SuiteSparse_config.mk,要改的标签有CC(mingw64),AR(mingw64),RANLIB(mingw64),CF(-mno-cygwin)(以摆脱编译好的库对cygwin的依赖),LAPACK,BLAS(静态库文件的路径),LIB(去掉lrt,这个是for gcc的),CHOLMOD_CONFIG(-DNPARTITION 去掉metis依赖, -DNSUPERNORDAL 去掉CHOLMOD中SUPERNORDAL组件的编译,因为我试了好几个版本的BLAS库都缺这里面的几个函数的定义SUPERNORDAL可以不去掉的,你只要在使用了cholmod的工程中加上链接选项-lblas和-llapack就好了啦,不过这样的话你就又需要一个win平台的lapack和blas的lib了,不过这个相对来说就好解决了)。

4.去CHOLMOD里面make就好了,中间可能会有几个.a文件傻掉,就按照提示,去对应目录ranlib一下就好,比如去COLAMD的Lib里面ranlib libcolamd.a。

5.make假如没问题就ok了,虽然make了无数次都有问题吧,好歹最后成了。总之遇到问题google就好了,虽然不一定真的会变好。

(小记一下google过的问题和疑似解:

CHOLMOD WINDOWS—–>cygwin\mingw\cmake\手写VSproj\编译好的库

windows 编译 linux 库—–>同上

cygwin—–>安装、配置、镜像、源

-lrt cannot find such file—–>gcc和mingw的区别

BLAS/METIS/LAPACK on windows—–>CMAKE是神器,如果出这个库的组织自己给写了cmakelist那就实在是太好了,可惜有些组织就是那么懒,当然这也不能怪他们,要怪就怪windows

BLAS—–>cblas.tgz、gotoblas二货的主页找不到了、atlas好难配置啊就不能简单点?

LAPACK—–>lapack with blas

其实以上两个问题很二,cygwin已经自带blas和lapack了,不过因为不是.so而是.a所以不能-l链接

等等以及忘了。。 烦人的东西谁记得住,记住这些不错了。

6.把libcolamd.a libamd.a libcholmod.a 拿出来,改后缀为.lib,以及CHOLMOD中的include拿出来,就是一套可用的API了,就可以拿到windows上的VS里面跑了。

7.苦尽甘来否?

8.编译好的win7-64bit包,/include & /lib,百度网盘链接,x64: 请点我,x86: 请点我,搞不到的话请mail我:bupt[dot]aswmtjdsj[at]gmail[dot]com

或者

parlin[at]outlook[dot]com

cholmod的主页:http://www.cise.ufl.edu/research/sparse/cholmod/

This entry was posted in  UseKnowledgeToFightTheWorld and tagged  cholmodcompilingcross-platformcygwinwindows by  Parlin.Miracle. Bookmark the  permalink.