【发布时间】:2014-05-02 07:47:34
【问题描述】:
当我注释/取消注释 clang/gcc 时,我的 makefile 可以与 clang 一起使用,但在 gcc 中失败……我不知道为什么。
#CC=gcc
#CFLAGS=-I -std=gnu99 -Wall -Wextra -Werror -pedantic
CC=clang
CFLAGS=-I -std=gnu99 -Wall -Wextra -Werror -pedantic
LIBS=-lpthread -lrt
SRC=rivercrossing.c functions.c
OBJ=$(SRC:.c=.o)
DEPS=rivercrossing.h
%.o: %.c $(DEPS)
$(CC) -c -o $@ $<
rivercrossing: $(OBJ)
$(CC) $^ $(CFLAGS) $(LIBS) -o $@
.PHONY: clean
clean:
rm -f *.o rivercrossing
使用 gcc 我有以下错误:
error: ‘for’ loop initial declarations are only allowed in C99 mode
error: ISO C90 forbids mixed declarations and code [-Werror=pedantic]
int stat = 0;
^
error: C++ style comments are not allowed in ISO C90 [-Werror]
*.o 文件也没有被删除,当我查看文件夹时它们仍然存在。为什么? 谢谢你的帮助。
【问题讨论】:
-
创建对象文件时需要传递
CFLAGS。 -
尝试将
$(CC) -c -o $@ $<更改为$(CC) -c $(CFLAGS) -o $@ $< -
它没有帮助,gcc -c -I -std=gnu99 -Wall -Wextra -Werror -pedantic -o functions.o functions.c 和以前一样的错误。