现在我正在xv6中尝试访问用户程序中的makefile变量。在其他linux系统中,通过进行可以很容易地实现
- 在makefile中,定义
gcc -D MYVARIABLE=1 ...
- 在我的linux用户程序中,通过定义
#include <stdio.h>
,我可以访问MYVARIABLE
但在xv6中,没有<stdio.h>。所以我无法访问MYVARIABLE
。
如何访问MYVARIABLE
??
猜测您使用了此repo:https://github.com/mit-pdos/xv6-public,可以在CFLAGS
声明中定义MYVARIABLE
,靠近第83行。
CFLAGS = -fno-pic -static -fno-builtin -fno-strict-aliasing -O2 -Wall -MD -ggdb -m32 -Werror -fno-omit-frame-pointer
CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 && echo -fno-stack-protector)
# Your macro here
CFLAGS += -DMYVARIABLE=1
在该生成文件中,没有%.o: %.c
规则:使用了隐式规则:
n.o
通过$(CC) -c $(CPPFLAGS) $(CFLAGS)
形式的命令从n.c
自动生成