VisualGDB:在GCC链接器参数中定义时间戳

时间:2016-06-15 08:32:31

标签: gcc linker timestamp

我试图链接一个应该包含时间戳的外部符号。我在VisualGSB属性对话框中输入LDFLAGS行。

我试图做一个

gcc -Wl,-gc-sections,--defsym,TIMESTAMP='date +%s' test.c

但链接器说:

  

错误:+%s`:没有这样的文件或目录

2 个答案:

答案 0 :(得分:0)

如果您想要date可执行文件的输出,则需要反引号或$(...)

gcc -Wl,-gc-sections,--defsym,TIMESTAMP=$(date +%s) test.c

正如您所做的那样,使用单引号只会为您提供文字字符串date +%s,这显然会导致工具链出现问题。

您可以在以下成绩单中看到这一点:

pax> echo 'date +%s'
date +%s

pax> echo `date +%s`
1465979960

pax> echo $(date +%s)
1465979967

请注意,这是来自bash shell。如果您的命令嵌入其他地方,您可能需要找到适合其他方法。

例如,在makefile内,您需要转义$

gcc -Wl,-gc-sections,--defsym,TIMESTAMP=$$(date +%s) test.c

答案 1 :(得分:0)

在shell中,您不能将命令嵌入到其他命令中,而是需要使用特殊字符告诉shell有关命令:反引号(向后单引号)。

gcc -Wl,-gc-sections,--defsym,TIMESTAMP="`date +%s`" test.c

使用上面显示的反引号应该在几乎所有的shell之间兼容。