【问题标题】:c11 flag is ignored in the make file [duplicate]在make文件中忽略c11标志[重复]
【发布时间】: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


【解决方案1】:

CXXFLAGS 传达了 C++ 的构建标志,但错误消息表明您正在尝试构建 C 源代码。 C 编译器标志进入CFLAGS

【讨论】:

  • 我按照你的指示(编辑了帖子)没有改变。
猜你喜欢
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多