ld:警告:忽略重复的库:最近更新 Xcodebuild 工具后出现“-lgcc”

Dev*_*gam 23 c++ xcode gcc g++ xcodebuild

最近,我升级到了 Xcode 15,并更新了 xcodebuild 工具。然而,突然之间,我的独立 C++ 应用程序由于某种原因无法使用 g++-13 编译器?任何人都知道什么可能有效,我不想降级到 Xcode 14。

小智 18

从苹果内部员工看来,这是Homebrew的错,你要么等待Homebrew修复,要么尝试其他方式安装GNU工具。

  • 更多详细信息请访问 https://github.com/orgs/Homebrew/discussions/4794#discussioncomment-7044468。(2023 年 9 月 10 日)“是的,这是当前 gcc 与 Xcode 15 和/或 CLT 15 的不兼容问题。该警告不是问题,我们将来会发布修复版本。” (3认同)

Mic*_*oll 11

2023-11-05 更新:部分用户在忽略此警告后报告了问题,请参阅下面 danny 的回答


Homebrew 团队于 2023 年 9 月 19 日回复了 GitHub 问题ld: warning: ignoring duplicated Library: '-lemutls_w', '-lgcc' #4794,其中:

“是的,这是当前 gcc 与 Xcode 15 和/或 CLT 15 的不兼容性。警告不是问题,我们将来会发布修复版本。”

一位评论者在这里问SO:

忽略这些警告是否安全?(来自评论者)

是的。为了摆脱警告,对我有用的是建议为 gcc 添加以下链接器标志:

-Wl,-ld_classic
Run Code Online (Sandbox Code Playgroud)

ld_classic是旧的 Mach 目标文件链接编辑器。

ld_classic 命令通过将所有对象文件中的相似部分组合成相似段、解析外部引用并搜索库,将多个 Mach-O(Mach 对象)文件合并为一个文件。在最简单的情况下,给出多个目标文件,ld_classic 将它们组合起来,生成一个目标文件,该目标文件可以被执行或成为进一步 ld_classic 运行的输入。(在后一种情况下,必须给出 -r 选项以保留重定位信息。)除非指定输出文件,否则 ld_classic 会生成名为 a.out 的文件。仅当链接编辑期间未发生错误并且不存在未定义的符号时,此文件才可执行。

(摘自手册页