我在linux内核编程方面是一个绝对的初学者,所以如果问题是初级的,很抱歉。
在这里https://www.oreilly.com/library/view/linux-device-drivers/0596000081/ch02s02.html我找到了下面的例子:
# Change it here or specify it on the "make" command line
KERNELDIR = /usr/src/linux
include $(KERNELDIR)/.config
CFLAGS = -D__KERNEL__ -DMODULE -I$(KERNELDIR)/include \ -O -Wall
ifdef CONFIG_SMP
CFLAGS += -D__SMP__ -DSMP
endif
all: skull.o
skull.o: skull_init.o skull_clean.o
$(LD) -r $^ -o $@
clean:
rm -f *.o *~ core我的问题很简单,预处理器宏__KERNEL__和使用的-D__KERNEL__之间有什么区别?尤其是这里的"-D“是什么意思?(顺便说一句,MODULE和-DMODULE的情况也是如此)。
发布于 2020-05-07 08:13:23
-D是一个option to the compiler (或预处理器),告诉它定义一个宏。因此,将-D__KERNEL__放在编译器命令行中与将#define __KERNEL__放在文件的顶部完全相同。同样,-DFOO将定义一个名为FOO的宏。
这里没有定义名为D__KERNEL__的宏。
https://stackoverflow.com/questions/61647299
复制相似问题