MSVS下ARPACK数学库的编译--------使用MinGW编译并利用MSVS转译
这周项目需要编译ARPACK库,感谢该博主的博文中的具体指导:“Visual studio 2015 +Windows10 配置ARPACK,用ARPACK求解特征值特征向量”,https://blog.csdn.net/barcelona941017/article/details/79727784。
说明:
1. 这种方式编译得到的数学库中的函数命名是Linux风格的,但可以在MSVC项目中调用;
2. 由于博文中下载的MinGW是32位版本,导致编译得到的dll也是32位版本。
3. 可以使用Intel IVF + MSVS编译原生Windows命名风格+64位版本的ARPACK,以后会单独写篇博文说明编译过程。
正文如下:
由于是在公司内网下编译及其它情况,产生了一些方法上的差异,现注明之。
公司内网计算机开发环境是:Windows 7 + MSVS 2013 Update 5。
1. 下载:
原博文需要下载MinGW,原博主下载的是:mingw-get-setup.exe。该程序需要通过互联网下载安装MinGW所需的各第三方库文件,因此在内网环境下需要离线安装MinGW。但是MinGW并没有直接提供离线安装程序,这里需要根据MinGW官方的离线安装文档(http://www.mingw.org/wiki/InstallationHOWTOforMinGW)完成MinGW的安装。
MinGW的安装目录我按照原博主的C:\MinGW建立,需要额外下载的MinGW组件是gcc-fortran。
MinGW官方的离线安装文档标示了所有离线安装MinGW所需的第三方库及下载链接(位于sourceforge),但是有几个连接会提示找不到文件,这时需要在MinGW官网下载mingw-get-setup.exe的网站(https://osdn.net/projects/mingw/releases/)中下载。
2. 安装:
首先,根据官网提示,将所有第三方库下载文件完全解压后放在MinGW的安装目录下。需要的第三方库完全解压后的目录中是诸如/bin, /mingw32等目录,把这些目录放入MinGW的安装目录下即可,不同的第三方库可能由重名的目录,合并这些目录即可。比如D:\Downloads\mpc-1.0.1-2-mingw32-dll.tar\mpc-1.0.1-2-mingw32-dll\bin与D:\Downloads\binutils-2.32-1-mingw32-bin.tar\binutils-2.32-1-mingw32-bin\bin合并为C:\MinGW\bin。
然后,环境变量中的系统变量PATH中加入MinGW安装目录\bin的路径,比如:C:\MinGW\bin。
最后,需要执行MSYS的安装程序,安装路径是:C:\MinGW\msys\1.0。安装完成后会弹出CMD提示你做一些配置,注意最后一项配置是对MinGW\bin\make.exe改名为mingw32-make.exe,当然此时在MinGW\bin下是没有make.exe的,安装会不完整,直接按CMD提示回车退出即可。等MSYS安装完成后把MinGW\msys\1.0中的make.exe复制到MinGW\bin下。然后再执行一次MSYS的安装程序,这时MSYS的CMD中最后一项配置就可以正常执行了。
3. 、4. 修改代码部分均无问题。
5. 编译&打包&VS2015配置:
原博文中的“首先打开MinGW shell,这个文件对用于C:\MinGW\msys\1.0\msys.bat(自己的MinGW目录下)”,实际是指通过CMD运行msys.bat文件打开MinGW shell。
原博文中的 “3)运行命令:lib /out:E:\ARAPCK\arpack_win32.lib /MACHINE:IX86 /DEF:E:\ARAPCK\arpack_win32.def”,参数/MACHINE:IX86会导致编译出的arpack库文件是32位的,该参数修改为: /MACHINE:X64即可编译64位的arpack库。验证编译结果通过MSVS的dumpbin工具输出库信息即可,使用dumpbin的参数是/headers。
完。