【问题标题】:GNU makefile shell command not working properlyGNU makefile shell 命令无法正常工作
【发布时间】:2018-08-06 18:06:32
【问题描述】:

我有这两行

GCC_VERSION=$(shell gcc --version | grep 'gcc (GCC)' | awk '{print $3}')

$(info $$GCC_VERSION is [${GCC_VERSION}])

打印出来:

$GCC_VERSION is [gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)]

而不是预期的 4.8.5。

它不能正常工作的任何原因?

谢谢。

【问题讨论】:

  • 我相信你需要$(shell gcc --version 2>&1 ...)。我们也必须做一些版本检查。另请参阅GNUmakefile
  • 尝试了 gcc --version 2>&1 ... 和 gcc --version 2>/dev/null ... 结果还是一样。
  • @jww,恐怕你错了。 gcc --version 已经在 stdout 上输出了版本字符串,否则,grep(1) 不应将其传递给 awk

标签: linux makefile gnu-make


【解决方案1】:

你需要把awk命令改成

awk '{print $$3}'

否则make 不会调用awk '{print $3}',而是awk '{print }',因为make 变量$3 被扩展为一个空字符串。

【讨论】:

  • 谢谢。在互联网上等待和搜索的同时偶然发现了这个事实。
  • 还要注意grep 'x' | awk 'y' 的大多数出现是useless use of grep,应该重构为awk '/x/ y'
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多