【问题标题】:collect2: fatal error: ld terminated with signal 11 [Segmentation fault]collect2:致命错误:ld 以信号 11 终止 [分段错误]
【发布时间】:2019-07-16 06:53:39
【问题描述】:

我实际上无法在 C 中编译一个简单的“helloworld”。当我输入“gcc hello.c”时,输出是: collect2:致命错误:ld 以信号 11 终止 [分段错误]

有人有想法吗?

我尝试重新安装 gcc、g++、make、cmake、binutils。这些都不起作用。 当我在终端中输入“ld”时,输出是: “分段错误”

【问题讨论】:

  • 哪个版本的 Linux?您升级到了哪些版本的 GCC 和 binutils?您是否运行which ld 来检查它是否运行您认为应该运行的方式?
  • /usr/bin/ld gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 我无法回答 binutils 的版本,因为 ld -v 给我一个分段错误
  • ld —version 也会崩溃吗?如果是这样,您的安装(ld 可能还有所有 binutils)严重损坏。但是,鉴于您已经完全更新了系统,还不清楚需要什么来修复它。也许考虑在重新安装之前同时删除 GCC 和 binutils?
  • ld -version 也是分段错误。我还删除了(清除)gcc 和 binutils,然后重新安装了它。但它没有用。
  • stackoverflow.com/questions/57065480/… 是一个非常类似的问题。

标签: c linux ld ubuntu-18.04


【解决方案1】:

我可以解决它

sudo apt purge binutils
sudo apt remove make
sudo apt autoremove
sudo apt install build-essential

我不知道为什么它适用于 build-essential...

【讨论】:

  • info 中所列,要安装的正确“包”是build-essential 而不是binutils'
【解决方案2】:

您可能遇到了这个老问题。 https://bugzilla.redhat.com/show_bug.cgi?id=1557346(从 2018 年 3 月开始,以及 binutils 2.25、2.27)。

更新你的 binutils。

例如:

# yum groupinstall Development Tools

# apt-get install build-essential

并安装内核源代码

# apt-get install linux-headers-$(uname -r)

【讨论】:

  • 这听起来很合理。
  • 你能粘贴 gcc,g++,make,cmake,binutils 的版本吗?和操作系统详情
  • gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 g++ (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 GNU Make 4.1 为 x86_64-pc-linux 构建-gnu cmake 版本 3.10.2
  • 正如@Jonathan 所说,您的ld 可能会出错。你确认 ld 是/usr/bin/ld 这是另一个link 同样的问题
  • 第二个链接来自 18 年前。在当前的 LTS 版本 Ubuntu 18.04 中,这不太可能是问题。
【解决方案3】:

您是否更新了任何库? 我认为在这种情况下可能缺少一些库。尝试执行以下操作:

which gcc

你会得到如下输出:

/usr/bin/gcc

然后使用以下命令检查库:

ldd /usr/bin/gcc

这将为您提供库及其共享对象。检查是否全部可用。

同时检查 gcc 版本以检查 'gcc' 二进制文件是否正常工作。

gcc --version

【讨论】:

  • 缺少库很少会导致ld 命令转储核心。
  • 我也试过这个。但是没有缺少库,我有最新的 gcc
  • gcc --version 正在工作..??提供输出..??
猜你喜欢
  • 2021-03-27
  • 1970-01-01
  • 2018-02-25
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多