我刚刚收到一条消息,其中有人无法编译C文件。 当他们尝试编译时,会出现以下错误。
$ gcc mpi01.c
mpi01.c:1:17: fatal error: mpi.h: No such file or directory
#include <mpi.h>
^
compilation terminated.
$
我确定C代码存在,所以它必须是安装问题,但mpi.h
就在那里。
/opt/mpss/3.6/sysroots/k1om-mpss-linux/usr/src/kernel/drivers/message/fusion/lsi/mpi.h
/usr/include/openmpi-x86_64/mpi.h
/usr/src/kernels/3.10.0-229.20.1.el7.x86_64/include/linux/mpi.h
有人知道我能做什么吗?
系统正在运行Centos7。
编辑1:
回答答案。我试图编译的不是我的代码。我做了什么来“确保”C编译的所有内容:
yum install gcc openmpi kernel-devel kernel-headers openmpi-devel
我不知道是否允许发布代码,但代码中包含以下标题:
#include <mpi.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
编译器命令行如下:
vim mpi01.c
module load mpi
gcc -o mpi01 mpi01.c
导致上述错误。
答案 0 :(得分:-1)
从源代码构建应用程序通常非常复杂。许多头文件和库必须位于正确的位置,必须仔细设置编译器选项,并且必须针对不同的体系结构对某些内容进行不同的编译。
你的问题甚至没有告诉我们你正在尝试编译什么,更不用说了。如果它是您从某个地方下载的软件,您应该将您的问题转发给该软件背后的社区 - 在编译过程中可能会错过一个步骤。
如果您正在尝试构建自己编写的内容,则需要确保编译命令在其源目录中包含该头文件的位置。
无论哪种方式,为了获得更多有用的帮助,您必须提供更多信息 - 您正在构建什么,您尝试执行哪些命令才是最重要的。