【发布时间】:2011-07-21 15:37:50
【问题描述】:
这与通常对重复符号错误的混淆不同... :-)
我正在一个 Xcode 项目中处理一些遗留的 Mac 代码,该项目具有相同的全局“跟踪”,在几个不同的源文件中定义 - 例如:
- File1.c:SInt32 跟踪;
- File2.c:布尔跟踪;
等等。很明显,原作者的意思是它们具有特定于文件的范围,但只是忽略了在任何这些行前面加上“静态”。这很好,很容易修复。
但我有点震惊链接器没有标记这些!在我看来,Xcode 的链接器(我认为是 gnu ld)只为链接到代码段的函数发出重复的符号警告或错误,而不是链接到数据段的全局变量。相反,它默默地将它们混为一谈,这会导致错误。
那么...我如何说服 Xcode 为重复的全局变量发出链接错误?或者以其他可以成为我构建的常规部分的方式获取这些信息?
【问题讨论】: