未应用生成文件编译错误-std=c99

未应用生成文件编译错误-std=c99,c,makefile,c99,C,Makefile,C99,我已经得到了我只需要修改的工作代码,但是我不能用下面提供的makefile编译程序 INCLUDE_PATH = -I/usr/X11/include -I$(BLDR_FREEGLUT_INCLUDE_PATH) LIBRARY_PATH = -L/usr/X11/lib -L$(BLDR_FREEGLUT_LIB_PATH) CCFLAGS = -std=c99 LDFLAGS = -lGL -lGLU -lglut -lX11 -lpthread GCC = gcc APP = nbo

我已经得到了我只需要修改的工作代码,但是我不能用下面提供的makefile编译程序

INCLUDE_PATH = -I/usr/X11/include -I$(BLDR_FREEGLUT_INCLUDE_PATH)
LIBRARY_PATH = -L/usr/X11/lib -L$(BLDR_FREEGLUT_LIB_PATH)
CCFLAGS = -std=c99 
LDFLAGS = -lGL -lGLU -lglut -lX11 -lpthread

GCC = gcc
APP = nbody

all: $(APP)
    @echo Make done

clean:
    @rm -f *.o $(APP)

nbody: nbody.c
    $(GCC) nbody.c -o nbody $(INCLUDE_PATH) $(CCFLAGS) $(LIBRARY_PATH) $(LDFLAGS)
make命令的第一个输出行如下所示

gcc nbody.c -o nbody -I/usr/X11/include -I -std=c99  -L/usr/X11/lib -L -lGL -lGLU -lglut -lX11 -lpthread
然而,下面是一些错误,它们说某些东西只“在C99模式下允许”,我不理解,因为C99的标志似乎被正确指定。为了解决这个问题,我尝试更改$(CCFLAGS)值的位置,但没有成功


如何修改此生成文件,使程序符合要求

-I-std=c99
表示编译器要添加名为
-std=c99
的目录以包含搜索路径。这不是你想要的。根据呈现的片段判断,
$(BLDR\u FREEGLUT\u INCLUDE\u PATH)
是空的,但它不应该是空的。修正该变量的值,事情就会顺利进行。

不一定。它可以是导出的shell变量,但也可以是makefile中定义的内部变量。但是,按照您使用它的方式,它不能为空,因为它会生成unclosed
-I
,它希望下一个参数是dirname。