C makefile错误:make:**没有规则使目标'omp.h';使用OpenMP

C makefile错误:make:**没有规则使目标'omp.h';使用OpenMP,c,gcc,makefile,openmp,C,Gcc,Makefile,Openmp,总之,我在用OpenMP编译一个C程序。这是我第一次使用makefile。执行“make”时,gcc报告错误make:*没有规则使目标omp.h',这是smooth.o'所需要的。停止然而,omp.h在/usr/lib/gcc/i686linux-gnu/4.6/include/omp.h中,我想知道如何修复它。有人能帮我吗?多谢各位 CC=gcc CFLAGS = -fopenmp all: smooth smooth: smooth.o ompsooth.o $(CC) $(CF

总之,我在用OpenMP编译一个C程序。这是我第一次使用makefile。执行“make”时,gcc报告错误make:*没有规则使目标
omp.h',这是
smooth.o'所需要的。停止然而,omp.h在/usr/lib/gcc/i686linux-gnu/4.6/include/omp.h中,我想知道如何修复它。有人能帮我吗?多谢各位

CC=gcc
CFLAGS = -fopenmp

all: smooth

smooth: smooth.o ompsooth.o
    $(CC) $(CFLAGS) -o smooth smooth.o ompsmooth.o

ompsmooth.o: ompsmooth.c assert.h stdio.h stdlib.h omp.h ompsmooth.h
    gcc $(CFLAGS) ompsmooth.c

smooth.o: smooth.c ompsmooth.h omp.h stdio.h stdlib.h string.h sys/types.h sys/stat.h     fcntl.h
    gcc $(CFLAGS) smooth.c

clean:

    rm *.o
    rm smooth

除非您希望更改标准头文件,否则最简单的解决方案就是将其从必备列表中删除


如果不想执行上述操作,则需要指定指向
omp.h
的完整路径,或使用该机制。

除非您希望更改标准头文件,否则最简单的解决方案就是将其从必备列表中删除


如果您不想执行上述操作,那么您需要指定指向
omp.h
的完整路径,或者使用该机制。

那么,就像这样?ompsooth.o:ompsooth.c gcc$(CFLAGS)ompsooth.c smooth.o:smooth.c gcc$(CFLAGS)smooth.c到底是谁开始了这个实践?旧的X源更糟,你知道了。如果头文件确实发生了更改,make将不知道它应该重建源代码,但它是这样做的。各种构建工具都知道如何自动扫描.c文件并为您创建头依赖项,但不是Linux的默认版本。如果你想让老梅为你做这件事,你可以找到一种方法,让老梅为你做这件事:@罗伯特:有点。您可能希望保留对头文件(ompsooth.h等)的依赖关系,否则如果您更改它们,将不会重新编译内容。另一方面,您可以使用自动变量简化规则:
gcc$(CFLAGS)$@technosaurus:什么做法?那么,就像这样?ompsooth.o:ompsooth.c gcc$(CFLAGS)ompsooth.c smooth.o:smooth.c gcc$(CFLAGS)smooth.c到底是什么开始了这种做法?旧的X源更糟,你知道了。如果头文件确实发生了更改,make将不知道它应该重建源代码,但它是这样做的。各种构建工具都知道如何自动扫描.c文件并为您创建头依赖项,但不是Linux的默认版本。如果你想让老梅为你做这件事,你可以找到一种方法,让老梅为你做这件事:@罗伯特:有点。您可能希望保留对头文件(ompsooth.h等)的依赖关系,否则如果您更改它们,将不会重新编译内容。另一方面,您可以使用自动变量简化规则:
gcc$(CFLAGS)$@technosaurus:What practice?