Search code examples
fortranredhatlapackblasatlas

BLAS, ATLAS, LAPACK Shared library minimal example


I installed atlas, blas and lapack x86_64 packages via

yum install atlas.x86_64 blas.x86_64 lapack.x86_64

on a Redhat 6.6 (ii) distro which installs a shared library but am having problems compiling and linking. For example, if I try to compile the minimal working example:

program main
  print *, 'hello world'
end program main

using

gfortran -L. main.f90 -llapack -lblas -o main

the compiler doesn't find the libraries and I get the error message:

/usr/bin/ld: cannot find -llapack
collect2: ld returned 1 exit status 

I'm relatively new to fortran and linux so I'm probably missing something obvious. I'm lost hours on compiling the libraries from source unsuccessfully too.

Pointers much appreciated.


Solution

  • You need to install the *-devel versions of those packages.

    E.g., with a virtual Fedora 17 system I had lying around:

    $ cat main.f90
    program main
      print *, 'hello world'
    end program main
    $ gfortran -L. main.f90 -llapack -lblas -o main
    /usr/bin/ld: cannot find -llapack
    /usr/bin/ld: cannot find -lblas
    collect2: error: ld returned 1 exit status
    $ sudo yum install atlas.x86_64 blas.x86_64 lapack.x86_64
    ...
    Installed:
      blas.x86_64 0:3.4.2-2.fc17            lapack.x86_64 0:3.4.2-2.fc17           
    
    Complete!
    $ gfortran -L. main.f90 -llapack -lblas -o main
    /usr/bin/ld: cannot find -llapack
    /usr/bin/ld: cannot find -lblas
    collect2: error: ld returned 1 exit status
    $ sudo yum install atlas-devel.x86_64 blas-devel.x86_64 lapack-devel.x86_64
    ...
    Installed:
      atlas-devel.x86_64 0:3.8.4-3.fc17       blas-devel.x86_64 0:3.4.2-2.fc17     
      lapack-devel.x86_64 0:3.4.2-2.fc17     
    
    Complete!
    $ gfortran -L. main.f90 -llapack -lblas -o main
    (Success)