使用HDF5进行编译:无法链接库文件(fortran 90)

时间:2014-10-12 06:40:18

标签: hyperlink fortran hdf5

我目前正尝试使用HDF5编译这些文件 我直接链接并包含了所有必要的内容(我认为),但编译仍无法找到所需的文件

这是我的Makefile:

CC = h5cc
FC = h5fc
LD = h5fc

FDEBUG  = -std -g -traceback
CFLAGS  = -g -O0 -Wall -pedantic
FFLAGS  = -g -O0 -Wall -I$(H5DIR)/include -L$(H5DIR)/lib/libhdf5hl_fortran.a
LDFLAGS = -I$(H5DIR)/include -L$(H5DIR)/lib/libhdf5hl_fortran.a
#LDFLAGS = -I$(MKLROOT)/include -L$(MKLROOT) -mkl=sequential
#     -opt-block-factor=16 -opt-prefetch=4 \

.SUFFIXES:
.SUFFIXES: .c .f .f90 .F90 .o

OBJS = timing.o    \
       kinds.o \
       rw_matrix.o \

EXE  = matmul_omp.exe

all: $(EXE)

$(EXE): $(OBJS) matmul_omp.o
    $(LD) $(LDFLAGS) -o $@ $^

.f90.o:
    -$(RM) -f $*.o $*.mod
    $(FC) $(FFLAGS) -c $<

.c.o:
    $(CC) $(CFLAGS) -c $<

.PHONEY: clean
clean:

这是错误的:

h5fc -I/curc/tools/x_86_64/rh6/hdf5/1.8.13/szip/2.1/zlib/1.2.8/jpeglib/9a/openmpi/1.8.2/intel/13.0.0/include -L/curc/tools/x_86_64/rh6/hdf5/1.8.13/szip/2.1/zlib/1.2.8/jpeglib/9a/openmpi/1.8.2/intel/13.0.0/lib/libhdf5hl_fortran.a  -o matmul_omp.exe timing.o matmul_omp.o

gfortran: /usr/lib64/libhdf5hl_fortran.a: No such file or directory
gfortran: /usr/lib64/libhdf5_hl.a: No such file or directory
gfortran: /usr/lib64/libhdf5_fortran.a: No such file or directory
gfortran: /usr/lib64/libhdf5.a: No such file or directory

正如您所看到的,我直接链接了libhdf5hl_fortran.a。但我不知道为什么错误给出了一个不同的目录/ usr / lib64 /

1 个答案:

答案 0 :(得分:1)

我认为你在这里遇到了一些错误。

如果您使用h5fc,那么您不需要添加所有include和lib路径。这是帮助应用程序的重点。

您正在添加具有Intel的路径,但您的h5fc存在GNU(gfortran)错误。

HDF5的gfortran版本看起来好像没有构建fortran绑定。

我建议尝试以下方法。使用完整路径(正如您所做的那样),但请拨打ifort而不是h5fc

ifort -I/curc/tools/x_86_64/rh6/hdf5/1.8.13/szip/2.1/zlib/1.2.8/jpeglib/9a/openmpi/1.8.2/intel/13.0.0/include \
      -L/curc/tools/x_86_64/rh6/hdf5/1.8.13/szip/2.1/zlib/1.2.8/jpeglib/9a/openmpi/1.8.2/intel/13.0.0/lib/libhdf5hl_fortran.a  \
      -o matmul_omp.exe timing.o matmul_omp.o