使用带有gcc而不是clang的Makefile编译程序

时间:2014-10-14 18:24:26

标签: makefile

我正在编写一个程序来拼写检查给定的文本。在我的电脑上,我使用这个Makefile来编译程序:

# compiler to use
CC = clang

# flags to pass compiler
CFLAGS = -ggdb3 -O0 Qunused-arguments -std=c99 -Wall -Werror

# name for executable
EXE = speller

# space-separated list of header files
HDRS = dictionary.h

# space-separated list of source files
SRCS = speller.c dictionary.c

# automatically generated list of object files
OBJS = $(SRCS:.c=.o)

# default target
$(EXE): $(OBJS) $(HDRS) Makefile
    $(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS)

# dependencies
$(OBJS): $(HDRS) Makefile

我想继续在我的Raspberry Pi上编程,但我只安装了gcc。是否可以使这个Makefile适用于gcc?我尝试用以下代码更改编译器:

CC = gcc

但它不起作用。我收到错误消息“无法识别的选项-Qunused-arguments”。

1 个答案:

答案 0 :(得分:2)

问题是Clang接受的-Q选项不是GCC认可的选项。

GCC和Clang是完全独立的编译器,因此人们不应该期望其中一个能够理解其他选项。事实上,Clang确实努力与GCC适度兼容,这在很大程度上使其可以用作GCC的直接替代品。但是,这种兼容性不是,也可能不应该是完整的。

因此,您的解决方案只是在更改CFLAGS定义的同时更改CC定义。