更新到Mac OS 10.8后:“架构x86_64的未定义符号”; “clang:错误:链接器命令失败,退出代码为1”

时间:2014-02-10 12:05:09

标签: macos clang osx-mountain-lion linker-errors x86-64

更新新Mac(OS 10.8)后,我和我的同事无法编译我们一直在使用的C ++代码。我们没有编码经验,如果有人能指出我们在新手级别的正确方向,我将非常感激。我们看到有很多关于这类错误的帖子,但是如果它们中的任何一个是相关的,我们都看不到如何,除了这些帖子似乎都说这可能是一个链接器问题。

当我们做“制造”时,有很多输出。第一部分是:

  

我们$ make g ++ -o ourProg 1.o main.o 2.o -L / Prog / libraries   -L / Prog / support_libraries -l_codea -l_codeb ...体系结构x86_64的未定义符号:

最后一部分是:

  

ld:找不到架构x86_64 clang的符号:错误:链接器   命令失败,退出代码为1(使用-v查看调用)make:***   [ourProg]错误1

不幸的是,使用代码的一个条件是我们无法在线发布,因此可能没有足够的信息可供任何人提供帮助。

对我来说最突出的是,看起来像Clang被用于连接,即使我们已经明确地说我们希望g ++用于编译。在makefile中,我们说:

  

CC = g ++

1 个答案:

答案 0 :(得分:4)

(在问题编辑中由OP回答。转换为社区维基答案。请参阅Question with no answers, but issue solved in the comments (or extended in chat)

OP写道:

  

谢谢大家;问题已经解决了。我不确定是否在问题的任何地方表明这一点,抱歉。我想描述我们如何修复它,以防任何其他新手无法理解关于这个问题的更复杂的帖子!

     

首先,我们通过更新到OS 10.9并安装新的命令行工具来遵循此处的建议。然后我们遇到了一个论坛帖子,讨论了链接问题的来源。在OS 10.8和10.9中,C ++默认标准库是不同的。所以我们首先在makefile中添加了一个新的include:

/usr/bin/clang++
  

然后我们添加到编译器标志行和库:

-stdlib=libstdc++