这是我在这里发表的第二篇文章,我有一个巨大的问题阻碍我学习,所以我必须尽快解决它!
我的 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
应该这样做。