折腾了很久终于把这玩意跑通了……
记录一下过程……如果有人也碰到同样的问题(会么……)也好有点参考。目前我查到的都是比较久远的方法了,所以暂且算是个update吧。
由于目前的项目涉及到在windows的qt下跑cholmod,而这个包本身是在Unix环境下写的,对windows非常不友好,于是在使用过程中会遇到很多困难。
那么从头来讲吧:
Step1. 下载SuiteSparse源码。
编译这个源码就说来话长了……网上有一些直接编译好的lib文件……目测……是不能直接跑的。原因可能是因为编译环境系统等等不太一致,所以最后还是决定自己编译一份。
Step2. 安装cygwin
由于源码是在Unix系统下的,windows下编译使用cygwin比较方便。但是一定要注意的是,最新的cygwin是不行的 -> 后面会提到cygwin里面gcc的问题。
cygwin比较方便的安装方法是下载安装程序,但是这种方式一定会安装程最新版本的gcc(version 4 以上),所以我从网上找了一份比较旧的cygwin离线安装程序。
gcc版本3.4.x,可以正常使用 -mno-cygwin 参数,摆脱对cygwin1.dll的依赖,从而移植到windows下的qt上。
Step3. 编译SuiteSparse
SuiteSparse文件夹中找到SuiteSparse_confi.mk文件,修改CF 添加-mno-cygwin,取消DNPARTITION的注释 (用来取消对METIS的依赖)
然后在cygwin下make编译
在这里我发现可能由于我的cygwin安装的不全(离线安装旧版本无法在线安装新软件),.exe的demo编译不出来,但是.a文件都可以生成。
.a文件拿出来扔到qt项目中就可以用了……
其他:
中间还有一些问题,比如blas和lapack我并没有在cygwin下装……但是还是编译出来了……(不知道最后会不会有什么问题)目前的demo程序确实能跑就是了。
另外在qt中有一些转换错误,稍微改一下就好了。
还有就是回报缺少.c文件的错误……不明白是为什么。已经编成了.a还缺少源码?反正加进来就能用了……
qt下使用cholmod及编译,布布扣,bubuko.com
原文:http://www.cnblogs.com/Dawning119/p/3602170.html