我的主要问题是收到此错误:
Makefile:463: recipe for target 'znep.out' failed
跑完之后make
我试图在我的机器上安装GPAW(g Projector Augmented Wave 方法,用于DFT模拟)。ASE 正在工作,我已经安装了Libxc ,并按照此处指定的方式编译了 BLAS 库, 但是在提取的包上执行“make”时,我总是遇到同样的错误:
~/Downloads/lapack-3.8.0$ make
gfortran -O2 -frecursive -c -o zunt03.o zunt03.f
gfortran -o xeigtstz zchkee.o zbdt01.o zbdt02.o zbdt03.o zbdt05.o zchkbb.o zchkbd.o zchkbk.o zchkbl.o zchkec.o zchkgg.o zchkgk.o zchkgl.o zchkhb.o zchkhs.o zchkst.o zchkst2stg.o zchkhb2stg.o zckcsd.o zckglm.o zckgqr.o zckgsv.o zcklse.o zcsdts.o zdrges.o zdrgev.o zdrges3.o zdrgev3.o zdrgsx.o zdrgvx.o zdrvbd.o zdrves.o zdrvev.o zdrvsg.o zdrvsg2stg.o zdrvst.o zdrvst2stg.o zdrvsx.o zdrvvx.o zerrbd.o zerrec.o zerred.o zerrgg.o zerrhs.o zerrst.o zget02.o zget10.o zget22.o zget23.o zget24.o zget35.o zget36.o zget37.o zget38.o zget51.o zget52.o zget54.o zglmts.o zgqrts.o zgrqts.o zgsvts3.o zhbt21.o zhet21.o zhet22.o zhpt21.o zhst01.o zlarfy.o zlarhs.o zlatm4.o zlctes.o zlctsx.o zlsets.o zsbmv.o zsgt01.o zslect.o zstt21.o zstt22.o zunt01.o zunt03.o dlafts.o dlahd2.o dlasum.o dlatb9.o dstech.o dstect.o dsvdch.o dsvdct.o dsxt1.o alahdg.o alasum.o alasvm.o alareq.o ilaenv.o xerbla.o xlaenv.o chkxer.o ../../libtmglib.a ../../liblapack.a ../../librefblas.a
make[2]: Leaving directory '/home/joshua/Downloads/lapack-3.8.0/TESTING/EIG'
NEP: Testing Nonsymmetric Eigenvalue Problem routines
./EIG/xeigtstz < nep.in > znep.out 2>&1
Makefile:463: recipe for target 'znep.out' failed
make[1]: *** [znep.out] Error 139
make[1]: Leaving directory '/home/joshua/Downloads/lapack-3.8.0/TESTING'
Makefile:42: recipe for target 'lapack_testing' failed
make: *** [lapack_testing] Error 2
我使用了安装说明中建议的“Makefile”的默认配置。默认文件在这里。
有什么建议吗?我使用 Kubuntu 17.10
在参加了 HPC 讲座并进行了一些研究后,我得到了答案。
看起来内核将一定数量的内存与编译过程相关联。在某些情况下,当可能出现错误并且开始分配不必要的大量内存时,此功能会有所帮助。但有时,编译需要比平时更多的内存并开始出现错误。
然后,通过使用以下命令,它为编译设置了无限量的内存。
现在一切正常。
感谢@steeldriver 的额外问题。
ulimit -s unlimited
解决方法并没有完全解决我的问题。gcc 堆栈粉碎保护器导致了另一个故障:要关闭堆栈粉碎保护器,请将 make.inc 中的 CFLAGS 行编辑为:
然后
make clean
和make all
。很有可能 gcc 堆栈粉碎检测器在这里检测到真正的内存错误,此错误报告中的一些评论表明,某些测试在索引某些数组时确实存在 off-by-1 错误,因此可能值得尝试更高版本的 lapack ,其中包括该错误的修复,如果仍未修复,请在上游提出错误。
(顺便说一句,我还遇到了另一个构建错误:它无法使用并行 make 构建,即 ie
make -j16 all
,但适用于标准单进程make all
。)我有同样的问题。我尝试了
ulimit -s unlimited
解决方法,但是在测试运行时,而不是在编译时。现在所有的测试都通过了!