-A选项在gcc中有什么作用?

时间:2019-07-24 12:01:50

标签: linux gcc makefile compilation arm

-A中的gcc选项有什么作用?我正在使用arm-none-linux-gnueabi-gcc

下面是我的生成文件中的规则。

$(SH_OBJ): $(OBJS)

$(CC) $(LFLAGS) -o $@-debug -A $@-debug $^ $(LIBPATH) $(LDLIBS)

1 个答案:

答案 0 :(得分:0)

我建议查找它,由于这是我从未见过的选择,所以我遵循了自己的建议。 -A是传递给预处理器的选项:

来自documentation

  

-谓词= answer

     

使用谓词断言并回答答案。此格式优于旧格式-A谓词(answer),该格式仍受支持,因为它不使用shell特殊字符。请参阅过时的功能。

     

-A -predicate = answer

     

使用谓词取消断言并回答答案。

(但是,makefile中的参数为$@-debug,它缺少=来拆分谓词和答案部分。很奇怪。)

还有documentation on assertions

  

在编写条件语句以测试编译程序将在哪种计算机或系统上运行时,断言是宏的不建议使用的替代方法。断言通常是预定义的,但是您可以使用预处理指令或命令行选项来定义它们。

     

断言旨在提供一种更系统的方式来描述编译器的目标系统,我们添加它们的目的是为了与现有编译器兼容。实际上,它们与系统特定的预定义宏一样不可预测。此外,它们不是任何标准的一部分,只有少数编译器支持它们。因此,断言的使用比系统特定的预定义宏的移植性差。我们建议您完全不要使用它们。

我猜这是一个非常老的项目的文件吗?