我想了解如何使用Makefile将全局变量链接到可执行文件中。 我编译了几个C源文件并从中创建了一个可执行文件。我计算此可执行文件的md5sum,并希望将其附加到另一个可执行文件,并使其可用作另一个可执行文件中的全局变量。通过这样做,我可以检查第二个可执行文件是否第一个被修改,如果是,那么我可以改变一些操作。
虽然我可以在执行开始时在第二个可执行文件中执行此操作,但我想坚持使用这种方法,因为我可以学习如何创建全局变量并直接在Makefile中链接到二进制文件。
答案 0 :(得分:0)
md5sum.c: program_1
echo 'const char md5sum_program_1[] = "'$$(md5sum program_1)'";' > md5sum.c
OBJECTS2 = ... md5sum.o
program_2: ${OBJECTS2}
${CC} -o $@ ${CFLAGS} ${OBJECTS2} ${LDFLAGS} ${LDLIBS}
第一行表示源文件md5sum.c
取决于第一个程序program_1
;当md5sum.c
不存在或者早于program_1
时,执行命令。该命令创建全局变量md5sum_program_1
的定义,并使用md5sum
的输出对其进行初始化。
OBJECTS2
宏包含program_2
加md5sum.o
所需的所有目标文件。最后一个命令链接程序。