【问题标题】:ld: library not found for -lgcc_ext.10.5ld:找不到 -lgcc_ext.10.5 的库
【发布时间】:2015-01-29 00:09:06
【问题描述】:

我正在尝试为学校编译一个基本的 C++ 程序,当我尝试从 Mac 终端 (10.7.6) 运行它时,我收到以下消息:

ld: library not found for -lgcc_ext.10.5
collect2: error: ld returned 1 exit status

我肯定在正确的目录中并安装了 XCode 命令行工具。这是我的命令提示符:

g++ -o chapter_2 hello_world.cpp

这是我的基本 c++ 程序。

#include <iostream>

using namespace std;

int main(){

  cout << "Hello world" << endl;

}

【问题讨论】:

  • 系统上是否存在 libgcc_ext.10.5.*?

标签: c++ gcc


【解决方案1】:

正如 Judd 指出的,问题在于链接器找不到 libgcc_ext.10.5。虽然我对此没有理想的解决方案,但对我有用的是使用homebrew 安装 gcc-4.8,并使用更新的 gcc。

brew install gcc48

我相信现在甚至还有 gcc49。使用它我可以毫无问题地进行编译(但请注意,我必须在控制台中使用 $ gcc-4.8 ...,因为 $ gcc ... 仍然指向旧的 gcc 版本(除非您明确更改它)。

【讨论】:

    【解决方案2】:

    我在 OS X 10.8 上遇到了同样的问题,当前 XCode 和 gcc 均由 Homebrew 安装。

    当我检查$ which g++ 时,它给出了/usr/local/bin/g++

    所以我在.bash_profile评论了这条路径:

    #PATH="/usr/local/bin:${PATH}"
    

    现在$ which g++ 给出/usr/bin/g++ 并且它的版本表明它来自XCode并且没有ld: library not found for -lgcc_ext.10.5 错误。

    【讨论】:

    • 我遇到了类似的问题,这对我有用。完成后请记住在 .bash_profile 中取消注释该行,否则您将无法访问使用自制软件安装的任何内容。
    • 为我工作。 C 编译问题永远不会过时。你可以通过了解 C 编译器甚至不编写 C 代码来谋生:(
    【解决方案3】:

    我不是 Mac 用户,但我知道问题在于链接器找不到库 (libgcc_ext.10.5),因为您的开发环境设置不正确。我希望它在 /usr/lib 或 /usr/local/lib 或类似的东西中。您可以尝试执行ld --help 并查看是否可以找出链接器搜索路径是如何指定的。 (ld 是执行链接的程序,g++ 在编译完成时调用它。)然后在您的机器上找到该库并将该路径添加到 ld 搜索路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-18
      • 2014-12-13
      • 2021-10-24
      • 2017-03-31
      • 1970-01-01
      • 2011-09-26
      • 2018-03-10
      • 2017-08-08
      相关资源
      最近更新 更多