首先我要说的是,我不是超级用户,而是有点像菜鸟,但我对我正在做的事情有基本的了解。
我按照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 lib
和snrm2.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
中,我有/BLAS
,cgemm.f
,ctbsv.f
,ctrsm.f
以及其他一些没有关联dgemm.f
的人}文件。为什么这些被遗漏了?我知道.o
例如是一个非常基本的矩阵乘法例程,我认为这是必不可少的,所以我假设在某个地方出现了错误,但我在{{1}期间从未看到任何错误消息过程。任何和所有的帮助表示赞赏,经过多个小时的尝试,我觉得结束了(希望)在眼前。所以我最后也是最重要的问题
5. 为什么有些源文件无法编译,这是否会阻止生成的库可用?如果是这样,我可以采取哪些不同的方式,或者我需要做什么才能完成库的构建?
我意识到个人dgemm
提到ARPACK不需要这些文件,但ARPACK示例需要这些文件。可以使用make
代替Makefile
来添加它们。