/ usr / bin / ld:在编译makefile时找不到-lmkl_rt

时间:2013-11-26 10:14:24

标签: gcc linker fortran shared-libraries intel

这是make文件

# EXTRALIBS = -L/opt/SUNWspro/lib -lF77 -lM77 -lsunmath  -lfsu
# LAPACK = -L/home/bramley/lib -llapack95
# BLAS = -L/home/bramley/lib -lblas95
# F95= /usr/local/intel/compiler60/ia32/bin/ifc
# OPTS= -O -w
# LIBS = $(LAPACK) $(BLAS)

include make.inc

runLU: luDriver.o LU8.o LU4.o rowswp.o elapsedtime.o kinds.mod \
    utilities.o swaps.o checkLU.o WriteParameters.o writeB.o Writeipiv.o 
    $(F95) $(INCS) -o runLU $(OPTS) luDriver.o LU8.o LU4.o kinds.o \
        utilities.o swaps.o elapsedtime.o WriteParameters.o checkLU.o \
        rowswp.o  writeB.o Writeipiv.o $(LIBS)

luDriver.o: luDriver.f90 kinds.mod 
    $(F95) $(OPTS) -c luDriver.f90
LU4.o: LU4.c
    $(CC) $(INCS) $(OPTS) -c LU4.c
LU8.o: LU8.c
    $(CC) $(INCS) $(OPTS) -c LU8.c

rowswp.o: rowswp.f90 kinds.mod
    $(F95) $(OPTS) -c rowswp.f90

WriteParameters.o: WriteParameters.f90 
    $(F95) $(OPTS) -c WriteParameters.f90

kinds.mod: kinds.f90 
    $(F95) $(OPTS) -c kinds.f90

elapsedtime.o: elapsedtime.f90 
    $(F95) $(OPTS) -c elapsedtime.f90

checkLU.o: checkLU.f90 kinds.mod 
    $(F95) $(OPTS) -c checkLU.f90

swaps.o: swaps.f90 kinds.mod 
    $(F95) $(OPTS) -c swaps.f90

utilities.o: utilities.f90 kinds.mod
    $(F95) $(OPTS) -c utilities.f90

writeB.o: writeB.f90 
    $(F95) $(OPTS) -c writeB.f90

Writeipiv.o: Writeipiv.f90 
    $(F95) $(OPTS) -c Writeipiv.f90

clean:
    /bin/rm -f *.o *.mod runLU log B ipiv

kleen:
    /bin/rm -f *.o *.mod runLU log results B ipiv

这是make.inc

# F90 = ifort
F90 = gfortran
CC = gcc
F95 = $(F90)
OPTS = -O3 

MKLROOT = /opt/intel/composer_xe_2013.3.163/mkl

LIBS =   -L$(MKLROOT)/lib/intel64 -lmkl_rt -lpthread -lm
INCS = -I.

如果没有找到-lmkl_rt,我该怎么办?

2 个答案:

答案 0 :(得分:2)

使用

 source /opt/intel/composerxe/bin/compilervars.sh intel64

(最好把它放在bash_profile)。根据您的安装调整路径。

它设置了正确的LIBRARY_PATH变量(不是LD_LIBRARY_PATH,用于运行时!)

答案 1 :(得分:0)

您应该设置变量LD_LIBRARY_PATH并将其指向包含缺失库的目录。