我试图连接一个外部符号,它应该有一个时间戳。我在VisualGSB属性对话框中将它输入LDFLAGS行。
我试着做一个
gcc -Wl,-gc-sections,--defsym,TIMESTAMP='date +%s' test.c但链接者说:
错误:+%s`:没有这样的文件或目录
发布于 2016-06-15 08:36:34
如果您想要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外壳的。如果您的命令是嵌入在其他地方的,那么您可能需要找到另一种适合这种方法的方法。
例如,在makefile中,您需要转义$
gcc -Wl,-gc-sections,--defsym,TIMESTAMP=$$(date +%s) test.c发布于 2016-06-15 08:37:52
在shell中,您不能像这样在其他命令中嵌入命令,而是需要使用特殊字符告诉shell命令:回勾(向后单引号)。
gcc -Wl,-gc-sections,--defsym,TIMESTAMP="`date +%s`" test.c使用上面所示的回拨应该在几乎所有的shell之间都兼容。
https://stackoverflow.com/questions/37830097
复制相似问题