gpt4 book ai didi

xcode - 如何说服 Xcode 发出重复的符号链接(symbolic link)器错误?

转载 作者:行者123 更新时间:2023-12-04 15:48:08 26 4
gpt4 key购买 nike

这与通常对重复符号错误的混淆不同... :-)

我正在一个 Xcode 项目中处理一些遗留的 Mac 代码,该项目具有相同的全局“跟踪”,在几个不同的源文件中定义 - 例如:

  • File1.c:SInt32 跟踪;
  • File2.c: bool 跟踪;

  • 等等。很明显,原作者的意思是它们具有特定于文件的范围,但只是忽略了在这些行中的任何一个前面加上“静态”。很好,很容易修复。

    但我有点震惊链接器没有标记这些!在我看来,Xcode 的链接器(我认为是 gnu ld)只为链接到代码段的函数发出重复的符号警告或错误,而不是链接到数据段的全局变量。相反,它默默地将它们混为一谈,这导致了错误。

    那么......我如何说服 Xcode 为重复的全局变量发出链接错误?或者以其他方式获取这些信息,这可以成为我构建的常规部分?

    最佳答案

    好吧,我想我已经回答了我自己的问题...... :-)

    我之前发过:

    So if you're using Xcode with LLVM GCC 4.2, go to the build settings dialog, find the "LLVM GCC 4.2 - Code Generation" section, and check the "No Common Blocks" checkbox. This enables the compiler's "-fno-common" option, and changes the object file generation so that ld will choke and emit an error if you have two globals in different source files with the same name.



    不幸的是,这似乎并不能解决所有情况。如果所有全局变量都具有相同的类型,它似乎工作正常。

    但是问题中的示例直接取自代码,其中名为“trace”的变量在具有两种不同类型的两个不同文件中定义为全局变量。当我选中该复选框时,构建系统仍然没有捕捉到这一点。

    关于xcode - 如何说服 Xcode 发出重复的符号链接(symbolic link)器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5411424/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com