尝试构建ARPACK,但许多源文件没有被编译

时间:2018-04-11 05:26:33

标签: fortran gfortran intel-fortran msys2 arpack

首先我要说的是,我不是超级用户,而是有点像菜鸟,但我对我正在做的事情有基本的了解。

我按照here的指示安装了MSYS2和MinGW-w64。我正在使用64位Windows 10,我想最终在我的Fortran 90代码中使用ARPACK库。我目前正在使用Microsoft Visual Studio 2017和Intel Fortran ifort编译器和MKL库。所以,

1。我应该使用 Error in creating Database /home/manish/projects/practice/nodejs/node_modules/mongodb/lib/mongo_client.js:792 throw err; ^ MongoError: Server at localhost:27017 reports wire version 0, but this version of Node.js Driver requires at least 2 (MongoDB2.6). at /home/manish/projects/practice/nodejs/node_modules/mongodb-core/lib/topologies/server.js:377:39 at /home/manish/projects/practice/nodejs/node_modules/mongodb-core/lib/connection/pool.js:541:18 at _combinedTickCallback (internal/process/next_tick.js:73:7) at process._tickCallback (internal/process/next_tick.js:104:9) gfortran编译ARPACK,还是无所谓?

附录:使用ifort进行编译似乎会造成很多麻烦,特别是因为ifort文件中引用的命令是unix命令,所以我需要用我不熟悉的Windows等价物替换它们(例如ARmake.inc - > ln -s

我已将ARPACK源文件解压缩到mklink,我更新了/c/ARPACK文件,更改了以下内容:

ARmake.inc

我也进入home = /c/ARPACK PLAT = x64 FC = gfortran 文件并删除了行/UTIL/second.f

2。我应该设置EXTERNAL ETIME()吗?我并不完全了解PLAT = x86_64的工作原理,因此我不知道这个设置究竟会产生什么影响。我正在make shell中运行make(从mingw64文件夹运行)。

接下来,我运行/msys64。我收到了一些警告,特别是在编译make libsnrm2.f时,我得到了同样的错误:

dnrm2.f

3。这些警告重要吗?我的Fortran 77知识很少,而且我还没有很好地理解它们。

此外,每次进入新文件夹我都会得到(例如)

snrm2.f:56:72:

    10 assign 30 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
snrm2.f:62:19:

    20    go to next,(30, 50, 70, 110)
                   1
Warning: Deleted feature: Assigned GOTO statement at (1)
snrm2.f:64:72:

       assign 50 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
snrm2.f:73:72:

       assign 70 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)
snrm2.f:79:72:

       assign 110 to next
                                                                        1
Warning: Deleted feature: ASSIGN statement at (1)

make[1]: Leaving directory '/c/ARPACK/BLAS' Making lib in /c/ARPACK/LAPACK make[1]: Entering directory '/c/ARPACK/LAPACK' Makefile:91: warning: overriding recipe for target '.f.o' ../ARmake.inc:95: warning: ignoring old recipe for target '.f.o' gfortran -O -c sgeqr2.f gfortran -O -c slabad.f gfortran -O -c slacon.f ..... 文件的位置

ARmake.inc

4。此警告/错误消息是否重要?我的理解是这应该打印例如

90   # %-------------------------------------------%
91   # |  Command to build .o files from .f files. |
92   # %-------------------------------------------%
93   #
94   .f.o:
95       @$(ECHO) Making $@ from $<
96       @$(FC) -c $(FFLAGS) $<

但是 Making sgeqr2.o from sgeqr2.f gfortran -O -c sgeqr2.f 并不喜欢这里有两个命令,而是用第二个命令覆盖第一个命令。

最后要把它全部包起来,在我再进一步之前,我注意到并非每个源make文件都已编译过。例如,在.f中,我有/BLAScgemm.fctbsv.fctrsm.f以及其他一些没有关联dgemm.f的人}文件。为什么这些被遗漏了?我知道.o例如是一个非常基本的矩阵乘法例程,我认为这是必不可少的,所以我假设在某个地方出现了错误,但我在{{1}期间从未看到任何错误消息过程。任何和所有的帮助表示赞赏,经过多个小时的尝试,我觉得结束了(希望)在眼前。所以我最后也是最重要的问题

5. 为什么有些源文件无法编译,这是否会阻止生成的库可用?如果是这样,我可以采取哪些不同的方式,或者我需要做什么才能完成库的构建?

我意识到个人dgemm提到ARPACK不需要这些文件,但ARPACK示例需要这些文件。可以使用make代替Makefile来添加它们。

0 个答案:

没有答案