Mac OS中的ranlib/ar会给出“没有符号”的警告

14

我使用一个特定的库,有几种编译方式(平台和目标特定代码),因此,有时在档案中会有完全空白的.c文件;这些代码被简单地 #ifdef 屏蔽掉了。这绝对是可以理解的,而且根本不是bug:我想要它这样。在Linux上,这确实不是问题。如果是问题,链接器会捕获。

然而,在Mac OS上,ranlib/ar不能让这些文件的“没有符号”警告消失。

现在,作为一名工程师,我希望我的编译过程绝对无警告。这是将要被评估的关键代码; 如果有警告,人们会怀疑我。也许我有什么遗漏了吗? 有什么命令行选项吗?

谢谢,

KJ


1
在这种情况下,您可以使用grep -v 'no symbols'来实现静音的务实方法(因为您知道自己在做什么)。 - deltheil
我也希望能找到解决方案。此外,“grep -v”不是可接受的解决方法。它假定我正在运行构建。如果其他人克隆了存储库,则在构建时不应需要过滤警告。 - acm
2个回答

5

最后,更新版本的ranlib 提供了一个-no_warning_for_no_symbols选项,在man页面中描述为:

不要警告没有符号的文件。

(在Xcode 10.1中包含)。不幸的是,ar目前还没有这个选项。但是正如man页面所述:

运行ranlib与执行"ar -s"完全等效

因此,您可以用ranlib替换许多(如果不是全部)对ar的调用。


2

我的两个想法是:(1) 在库中始终放置一些符号,即使它是一个零长度的对象。(2) 在Makefile环境中提供包装器,用于过滤掉ranlib/ar的警告。其他用户/自动化构建不需要显式地使用grep -v,可以在您提供并替换的命令中实现,例如:

AR = $(PROJECT_HOME)/bin/project-ar
RANLIB = $(PROJECT_HOME)/bin/project-ranlib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接