利用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  cholmodcompilingcross-platformcygwinwindows by  Parlin.Miracle. Bookmark the  permalink.

以上是关于利用cygwin编译cholmod以获得在windows上可用的库lib的主要内容,如果未能解决你的问题,请参考以下文章

UMFPACK在Windows下的编译

Cygwin下用CMake编译库

C 编译器无法创建可执行文件 - Cygwin/MinGW

索引 CHOLMOD 密集向量数组

win7下使用cygwin编译VLC

STM32CubeIDE 编译C/C++程序