gpt4 book ai didi

C编程——在编译时获取机器名、用户名

转载 作者:太空宇宙 更新时间:2023-11-04 03:27:45 28 4
gpt4 key购买 nike

是否有一组在编译时创建的定义,我可以使用它们来填充 printk 语句,其中包含有关在哪里以及谁最后构建内核驱动程序的信息?我知道有预定义的 C 宏,我希望在那里找到一些在编译开始时动态设置的东西,但似乎没有。

这也特定于 GCC。提前致谢。

最佳答案

扩展我的评论;如果你使用 make,你可以只使用 make 的 shell 函数。

它在 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 设置它,但不要忘记添加转义引号。

关于C编程——在编译时获取机器名、用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901932/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com