最近在指导一个研一的学生关于HF与DFT程序实现时候的区别与联系,就想着使用ergoSCF代码进行教学;程序给他后他在configure的时候出了问题,是关于lapack的。虽然说apt install一类的很好就可以解决,但是为了后面可以解决类似的问题,就以此为例说明了一下一般configure出问题后的解决步骤。

1. 首先 ./configure的时候,留意错误信息

    checking for pthread_create in -lpthread... yes
    checking for dposv_... no
    checking for main in -lacml... no
    checking for main in -lmkl... no
    checking for main in -lessl... no
    checking for main in -latlas... no
    checking for dgemm_ in -lblas... no
    checking for main in -lmkl_lapack... no
    checking for dposv_ in -llapack... no
    checking for dgesv_ in -llapack... no
    configure: error: lapack required but not found

2. git grep -i dposv (查找报错的dsopv)

   得知其在configure里面,可以将该部分提取出来
    #ifdef __cplusplus
    extern "C"
    #endif
    char dposv_ ();
    int
    main ()
    {
    return dposv_ ();
      ;
      return 0;
    }

3. 使用提取出来的测试程序放到 /home/masho2019/ergo-3.7/test-yingjin下面,命名为test.c

  • a) 使用 gcc test.c -llapack -lblas 编译报错 原因为lapack没有加入搜索路径
  • b) 使用 gcc test.c -L/home/masho2019/Downloads/lapack-3.8.0 -llapack -lblas 仍然报错,原因为缺少gfortran和lm库
  • c) 使用gcc test.c -L/home/masho2019/Downloads/lapack-3.8.0 -llapack -lblas -lgfortran -lm 通过 (但是执行报错,怀疑虚拟机问题,暂时无视)

4. 使用额外的指令,重新./configure

CC=gcc LDFLAGS=-L/home/masho2019/Downloads/lapack-3.8.0 LIBS="-llapack -lblas -lgfortran -lm" ./configure
configure通过

(J_Sagat)

  • tec_ergoscf.txt
  • Last modified: 2019/09/24 00:23
  • (external edit)