Fortran 安装BLAS-3.7.0软件包时未定义的参考

Fortran 安装BLAS-3.7.0软件包时未定义的参考,fortran,gfortran,undefined-reference,blas,Fortran,Gfortran,Undefined Reference,Blas,我是Linux新手,所以我尝试在Oracle VirtualBox上设置一个虚拟机,以便与Ubuntu 14.04-32位版本配合使用。我从下载了BLAS-3.7.0软件包,并通过首先使用gfortran编译所有.f文件来安装它: gfortran -c *.f 然后使用所有已编译文件创建共享库: sudo gfortran -shared -fPIC -o libblas.so *.o 当我检查共享库时 nm -u libblas.so 它返回一个未定义引用的

我是Linux新手,所以我尝试在Oracle VirtualBox上设置一个虚拟机,以便与Ubuntu 14.04-32位版本配合使用。我从下载了BLAS-3.7.0软件包,并通过首先使用gfortran编译所有.f文件来安装它:

    gfortran -c *.f
然后使用所有已编译文件创建共享库:

    sudo gfortran -shared -fPIC  -o libblas.so *.o 
当我检查共享库时

    nm -u libblas.so
它返回一个未定义引用的列表,如下所示:

     U cabsf@@GLIBC_2.1
     U cabs@@GLIBC_2.1
     w __cxa_finalize
     U _gfortran_stop_string@@GFORTRAN_1.0
     U _gfortran_string_len_trim@@GFORTRAN_1.0
     U _gfortran_st_write_done@@GFORTRAN_1.0
     U _gfortran_st_write@@GFORTRAN_1.0
     U _gfortran_transfer_character_write@@GFORTRAN_1.4
     U _gfortran_transfer_integer_write@@GFORTRAN_1.4
     w __gmon_start__
     w _ITM_deregisterTMCloneTable
     w _ITM_registerTMCloneTable
     w _Jv_RegisterClasses
     U sqrtf@@GLIBC_2.0
     U sqrt@@GLIBC_2.0
然后,我尝试添加glibc的数学库和gfortran库,就像一些关于-lm和-lgfortran的建议:

    gfortran -c *.f
    sudo gfortran -L/usr/lib/i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/4.8 -shared -fPIC  -o libblas.so *.o -lm -lgfortran
但同样的错误会再次出现

如果有人能帮我指出我共享图书馆的问题,我将不胜感激。我需要BLAS和LAPACK软件包来安装GPAW模拟库(),但是GPAW在链接BLAS和LAPACK共享库时,由于引用未定义,所以总是发回错误消息

编辑:********* 对于GPAW-1.2.0,我使用BLAS-3.7.0、lapack-3.7.0和libxc-3.0.0的静态库安装它,方法是修改setup.py文件中的额外链接参数:

    extra_link_args ['/usr/local/lib/xc/lib/libxc.a', '/usr/local/lib/BLAS-3.7.0/libblas.a', '/usr/local/lib/lapack-3.7.0/liblapack.a']
安装GPAW后的My configuration.log文件如下所示:

    libraries []
    library_dirs []
    include_dirs ['/usr/local/lib/xc/include', '/usr/lib/python2.7/dist-packages/numpy/core/include']
    define_macros [('NPY_NO_DEPRECATED_API', 7)]
    extra_link_args ['/usr/local/lib/xc/lib/libxc.a', '/usr/local/lib/BLAS- 3.7.0/libblas.a', '/usr/local/lib/lapack-3.7.0/liblapack.a']
    extra_compile_args ['-Wall', '-std=c99']
    runtime_library_dirs []
    extra_objects []
我还将库路径和include路径添加到库路径和C\u include\u路径中:

    echo $C_INCLUDE_PATH 
    /usr/local/lib/xc/include/
    echo $LIBRARY_PATH 
    /usr/local/lib/BLAS-3.7.0:/usr/local/lib/lapack-3.7.0:/usr/local/lib/xc/lib
然后,我将其安装为:

    sudo python setup.py install >&log.txt
当我尝试在gpaw/test文件夹中运行测试脚本,或者只是在终端窗口中键入“gpaw info”时,它返回以下信息:

    OpenBLAS : Your OS does not support AVX instructions. OpenBLAS is     using Nehalem kernels as a fallback, which may give poorer performance.
    Traceback (most recent call last):
    File "/usr/local/bin/gpaw", line 2, in <module>
    from gpaw.cli.main import main
    File "/usr/local/lib/python2.7/dist-packages/gpaw/__init__.py", line 239, in <module>
    from gpaw.calculator import GPAW
    File "/usr/local/lib/python2.7/dist-packages/gpaw/calculator.py", line 11, in <module>
    import gpaw.mpi as mpi
    File "/usr/local/lib/python2.7/dist-packages/gpaw/mpi/__init__.py", line 16, in <module>
    from gpaw.utilities import is_contiguous
    File "/usr/local/lib/python2.7/dist-packages/gpaw/utilities/__init__.py", line 13, in <module>
    import _gpaw
   ImportError: /usr/local/lib/python2.7/dist-packages/_gpaw.so: undefined symbol: dnrm2_

但是我没有在安装配置中选择openblas。

在链接wiith GPAW时向我们显示确切的错误消息。该库不应该包含来自其他库的符号,它们是在运行最终可执行文件时从中加载的。还有导致错误消息的确切命令。谢谢,它改变了很多非常重要的事情。您是否安装了OpenBLAS?还是在GPAW中?它来自哪里?也许您自己的BLAS根本不起任何作用。我实际上查看了gpaw-1.2.0源代码中的config.py,并查看了32位机器的i686配置。我对它进行了一些修改,以避免自动发现openblas共享库和blas或lapack共享库(因为我想同时安装blas-3.7.0和lapack-3.7.0静态库)。您是什么时候修改它的?现在还是错误之前?如果在错误之前,上帝知道实际发生了什么。。。