【发布时间】:2019-06-29 00:04:30
【问题描述】:
我有大量的源代码,其中大部分是用 Fortran90 语言编写的,但有些部分是用 C 语言编写的。为了正确编译此代码需要安装 MPI 和 HDF5。当我尝试编译模型时,我现在已经安装了它们(编译不是使用./compile 命令而是./install.sh,它会处理包括编译在内的所有事情)。我有一个很长的错误,并且都与头文件的路径有关。这是错误:
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: mpif.h
Can't find file: stdio.h
Can't find file: math.h
Can't find file: stdlib.h
Can't find file: malloc/malloc.h
Can't find file: malloc.h
Can't find file: stdlib.h
Can't find file: errno.h
Can't find file: string.h
Can't find file: ctype.h
Can't find file: dirent.h
Can't find file: string.h
之后还有一些其他错误,我认为它们与上述错误有关。我试图在 ./bashrc 中设置 PATH 并且当我搜索例如 locate mpif.h 它返回:
[hamid@localhost bin]$ locate mpif.h
/home/hamid/Downloads/ED-2.1/ED/build/bin/mpif.h
/home/hamid/Downloads/ED-2.1/ED/src/mpi/mpif.h
/home/hamid/Downloads/mpich-3.1.3/src/binding/fortran/mpif_h/mpif.h
/home/hamid/Downloads/mpich-3.1.3/src/binding/fortran/mpif_h/mpif.h.in
/home/hamid/Downloads/mpich-3.1.3/src/include/mpif.h
/home/hamid/mpich2-optimised/include/mpif.h
我还设置了 LD_LIBRARY_PATH 变量,例如:
export LD_LIBRARY_PATH=$MPI_DIR/lib:$LD_LIBRARY_PATH
但它似乎仍然无法正常工作。我的猜测是它不仅与 MPI 或 HDF 路径设置有关,因为其中一些是 GCC(C 编译器)头文件。 知道可能是什么问题吗?
【问题讨论】:
-
你需要使用
-I选项到gcc告诉它在哪里可以找到头文件。 -
没有使用
LD_LIBRARY_PATH定位标头。使用-I选项告诉它哪个目录包含您的标题。 -
谢谢伙计们,我不知道该放在哪里-因为正如我所提到的,模型的编译不像简单的./compile、make 和 make install 编译。相反,它有 ,;/install bash 脚本。如果有兴趣here 是更多描述,我正在关注快速安装部分。
-
我假设你有一个 makefile 来完成所有这些工作。在这样的行中: gcc $(CFLAGS) -c currentfile.c -o currentfile.o -Ipathtoheaders
-
是否有一个名为 configure 或 config.in 或类似的文件?您可能必须先运行
make configure之类的东西来配置 makefile。
标签: c parallel-processing fortran header-files