Mac OS中的ranlib/ar给了我"没有符号"的警告

KJH*_*KJH 9 c unix macos linker

我使用一个特定的库,它有几种编译方式(特定于平台和特定于目标的代码),因此,有时在归档中有完全空的.c文件; 代码简直就是#ifdef'd.这是完全理解的,而不是一个错误:我想这样.在Linux上,这确实不是问题.如果这是一个问题,链接器会捕获它.

然而,Mac OS上的ranlib/ar无法令人信服地压制这些文件的"无符号"警告.

现在,我是一名工程师,我想完全无警告地运行我的编译过程.这是将要评估的关键代码; 如果我有警告,人们会看着我好笑.是否有一些我忽略的东西?一些命令行选项?

谢谢,

KJ

小智 5

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

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

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

运行 ranlib 完全等同于执行 'ar -s'

因此,您可能可以替换许多(如果不是全部)调用arby ranlib


dbr*_*wer 2

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

AR = $(PROJECT_HOME)/bin/project-ar
RANLIB = $(PROJECT_HOME)/bin/project-ranlib
Run Code Online (Sandbox Code Playgroud)