【问题标题】:about CFLAGS in Makefile关于 Makefile 中的 CFLAGS
【发布时间】:2012-03-25 16:16:53
【问题描述】:

在makefile中,有一行:

    CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 
&& echo -fno-stack-protector)

有什么用 shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1? 它似乎什么都不做。整条生产线如何运作? 提前致谢。

【问题讨论】:

    标签: c gcc makefile


    【解决方案1】:

    它会测试 -fno-stack-protector 是否是 C 编译器的有效命令行选项,如果是,则将此选项附加到 CFLAGS,否则什么也不做。

    【讨论】:

      【解决方案2】:

      如果您的编译器没有有选项-fno-stack-protector,它将返回一个错误代码(即!=0),否则它将返回0(在返回代码中表示“真”) ,表示一切正常。

      现在,表达式foo && bar 意味着只有在foo 返回非错误代码(即0)时才会执行bar。所以,你看,如果你的编译器没有有那个标志,它会返回“false”(!=0)并且echo命令永远不会被执行。但如果它确实有标志,echo 将被执行。

      【讨论】:

      【解决方案3】:

      它不以某种方式测试 -fno-stack-protector 选项是否可用?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多