无法编译任何c/c++程序,链接器问题

无法编译任何c/c++程序,链接器问题

这是我在这里发表的第二篇文章,我有一个巨大的问题阻碍我学习,所以我必须尽快解决它!

我的 gcc 工作正常,我必须在 FairThreads(C 语言)上工作。我下载了以下存档:

公平线程

正如你所看到的,在 /src 中有一个 makeFile,我替换了第二行:

LIB_DIR     = ../lib

经过 LIB_DIR = /usr/bin/ld

我通过命令“make”编译了makeFile

现在,我无法再编译任何 c/c++ 程序。甚至是一个 Hello World 程序。

每次尝试编译时,我都会在终端上收到以下错误消息:

/usr/bin/ld: 2: /usr/bin/ld: Syntax error: newline unexpected
collect2: error: ld returned 2 exit status

我在网上找到了这个解决方案,但它对我不起作用:

sudo apt-get autoremove binutils    
sudo apt-get install binutils

我还尝试在执行时重新安装 gcc:

sudo apt-get purge gcc 

我有 :

Des erreurs ont été rencontrées pendant l'exécution :
  linux-firmware
  linux-image-generic-hwe-18.04
  linux-generic-hwe-18.04
E: Sub-process /usr/bin/dpkg returned an error code (1)

但是当我尝试 gcc --version 时它告诉我没有找到它。

因此,当我执行命令重新安装它时:

sudo apt-get install gcc 

我也得到:

Des erreurs ont été rencontrées pendant l'exécution :
 linux-firmware
 linux-image-generic-hwe-18.04
 linux-generic-hwe-18.04
 linux-image-5.4.0-72-generic
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

但 gcc --version 告诉它已安装。

最后,当我尝试编译程序时,我得到:

/usr/bin/ld: 2: /usr/bin/ld: Syntax error: newline unexpected
collect2: error: ld returned 2 exit status

我希望我解释得很好,我会得到一个解决方案:/,作为一名计算机科学学生,没有 gcc 我什么也做不了:(

编辑1:

当我尝试通过执行删除 bin/ld 时:

sudo rm -fr /usr/bin/ld;sudo apt-get install --reinstall binutils

我有 :

Des erreurs ont été rencontrées pendant l'exécution :
 linux-firmware
 linux-image-generic-hwe-18.04
 linux-generic-hwe-18.04
 linux-image-5.4.0-72-generic
 initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

以及这个特定的错误消息:

WARNING: no ldd around - install libc-bin

编辑 :

我已经通过命令安装了 ldd:

sudo apt-get install libc-bin

仍然没有变化...

答案1

您覆盖了二进制文件/usr/bin/ld(尽管您没有这么说,但我假设您make以 root 身份运行)。

您必须删除并重新安装/usr/bin/ld才能拥有正常的构建环境。

如果您使用的是 Debian 衍生版本,sudo rm -rf /usr/bin/ld;sudo apt-get install --reinstall binutils应该这样做。

相关内容