在Makefile中将变量链接到可执行文件

时间:2014-04-17 07:34:25

标签: makefile

我想了解如何使用Makefile将全局变量链接到可执行文件中。 我编译了几个C源文件并从中创建了一个可执行文件。我计算此可执行文件的md5sum,并希望将其附加到另一个可执行文件,并使其可用作另一个可执行文件中的全局变量。通过这样做,我可以检查第二个可执行文件是否第一个被修改,如果是,那么我可以改变一些操作。

虽然我可以在执行开始时在第二个可执行文件中执行此操作,但我想坚持使用这种方法,因为我可以学习如何创建全局变量并直接在Makefile中链接到二进制文件。

1 个答案:

答案 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_2md5sum.o所需的所有目标文件。最后一个命令链接程序。