【问题标题】:Makefile compile error not applying -std=c99Makefile 编译错误未应用 -std=c99
【发布时间】:2014-05-15 12:49:17
【问题描述】:

我已经获得了我只需要修改的所谓工作代码,但是我无法使用下面提供的 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) 值的位置,但没有成功。

如何修改这个 makefile 以使程序符合要求?

【问题讨论】:

    标签: c makefile c99


    【解决方案1】:

    -I -std=c99 表示编译器添加名为-std=c99 的目录以包含搜索路径。这不是你想要的。从呈现的片段来看,$(BLDR_FREEGLUT_INCLUDE_PATH) 是空的 - 虽然它不应该是。修正那个变量的值,事情就会顺利进行。

    【讨论】:

    • 不一定。它可以是导出的 shell 变量,也可以是 makefile 中定义的内部变量。但是,按照您使用它的方式,它不能留空 - 因为它会生成未关闭的-I,它期望下一个参数是 dirname。
    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多