我试图链接一个应该包含时间戳的外部符号。我在VisualGSB属性对话框中输入LDFLAGS行。
我试图做一个
gcc -Wl,-gc-sections,--defsym,TIMESTAMP='date +%s' test.c
但链接器说:
错误:+%s`:没有这样的文件或目录
答案 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之间兼容。