【发布时间】:2020-12-15 00:17:40
【问题描述】:
我尝试使用 c11 模式编译我的代码。 这是我的制作文件:
obj-m := message_slot.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
CFLAGS=-g -std=c11 -Wall -pedantic
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
在编译过程中由于某种原因,编译器仍然尝试使用 c90 编译代码。有人知道为什么吗?
/home/eran/CLionProjects/tau_os_ex3/message_slot.c:29:5: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
【问题讨论】:
-
c++11选择 C++ 11 标准。如果要使用 C 11 标准,请选择c11。而且,正如 John 所说,使用CFLAGS变量(用于 C 编译器)而不是CXXFLAGS变量(用于 C++ 编译器) -
这与 C11 本身无关,而与您的构建系统和您的 make 配置有关。这取决于很多事情,你的操作系统,你的编译器,......你还应该提供更多信息,例如你的 make 真正选择执行的编译行。
标签: makefile compilation