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루트로 실행하고 있다고 가정합니다).

/usr/bin/ld정상적인 빌드 환경을 가지려면 제거하고 다시 설치해야 합니다 .

Debian 파생 버전을 사용하는 경우 sudo rm -rf /usr/bin/ld;sudo apt-get install --reinstall binutils이 작업을 수행해야 합니다 .

관련 정보