我使用一个特定的库,它有几种编译方式(特定于平台和特定于目标的代码),因此,有时在归档中有完全空的.c文件;代码只是#ifdef' d。这是完全理解的,而不是一个错误:我想这样。在Linux上,这确实不是问题。如果这是一个问题,链接器会捕获它。
然而,Mac OS上的ranlib / ar无法令人信服地压制"没有符号"警告这些文件。
现在,我是一名工程师,我希望完全无警告地运行我的编译过程。这是将要评估的关键代码;如果我有警告,人们会看着我好笑。是否有一些我忽略的事情?一些命令行选项?
谢谢,
KJ
答案 0 :(得分:1)
我想到的两种可能性是:(1)总是在库中放置一些符号,即使它是一个零长度的对象。 (2)在Makefile环境中为runlib / ar提供包装过滤警告。其他用户/自动构建不需要显式使用grep -v,它可以在您提供和替换的命令中,例如:
AR = $(PROJECT_HOME)/bin/project-ar
RANLIB = $(PROJECT_HOME)/bin/project-ranlib
答案 1 :(得分:1)
最后,ranlib
的较新版本提供了一个选项-no_warning_for_no_symbols
,该选项在man
页中称为
不要警告没有符号的文件。
(包含在Xcode 10.1中)。不幸的是,ar
还没有此选项。但是,如man
页所指出的那样
运行ranlib完全等同于执行“ ar -s”
因此,您可能可以将ar
的许多(如果不是全部)调用替换为ranlib
。