利用cygwin编译cholmod以获得在windows上可用的库lib
Posted kaluotee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用cygwin编译cholmod以获得在windows上可用的库lib相关的知识,希望对你有一定的参考价值。
原文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 cholmod, compiling, cross-platform, cygwin, windows by Parlin.Miracle. Bookmark the permalink.以上是关于利用cygwin编译cholmod以获得在windows上可用的库lib的主要内容,如果未能解决你的问题,请参考以下文章