是否有一组在编译时创建的定义,我可以使用这些定义来填充printk语句,其中包含有关上次构建内核驱动程序的位置和人员的信息?我知道有预定义的C宏,我希望在那里找到一些动态设置的东西,因为编译开始了,但似乎并没有。
这也是GCC特有的。提前谢谢。
答案 0 :(得分:1)
扩大我的评论;你可以使用make的shell函数,以防你使用make。
在makefile中看起来像这样:
USER=$(shell whoami)
HOST=$(shell hostname)
CXX=gcc
CXX_DEFINES=-D__BUILD_USER=\"$(USER)\" -D__BUILD_HOST=\"$(HOST)\"
CXX_FLAGS=-c -Wall -Wextra $(CXX_DEFINES)
CXX_LFLAGS=
SOURCES=main.c
OBJECTS=$(SOURCES:.c=.o)
EXEC=hostusertest
all: $(SOURCES) $(EXEC)
clean:
rm $(OBJECTS)
rm $(EXEC)
$(EXEC): $(OBJECTS)
$(CXX) -o $@ $(OBJECTS) $(CXX_LFLAGS)
%.o: %.c
$(CXX) $(CXX_FLAGS) $<
基本上只需使用标准shell命令来收集信息并在makefile中创建一个变量,该变量在使用shell函数$(shell ...)
之后保存该信息。
然后只需通过-D NAME=VALUE
设置它,但不要忘记添加转义的qoutation标记。