구성 : 오류 : C 컴파일러가 실행 파일을 만들 수 없습니다


15

를 사용하여 rvm을 설치하려고했습니다 \curl -L https://get.rvm.io | bash -s stable --ruby --autolibs=enable --auto-dotfiles. 구성 오류가 발생할 때까지 정상적으로 작동했습니다.

Error running './configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared',
please read /home/nishant/.rvm/log/1379591052_ruby-2.0.0-p247/configure.log
There has been an error while running configure. Halting the installation.

언급 된 로그 파일의 내용은 다음과 같습니다.

[2013-09-19 17:15:58] ./configure
current path: /home/nishant/.rvm/src/ruby-2.0.0-p247
command(4): ./configure --prefix=/home/nishant/.rvm/rubies/ruby-2.0.0-p247 --disable-install-doc --enable-shared
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/home/nishant/.rvm/src/ruby-2.0.0-p247':
configure: error: C compiler cannot create executables
See `config.log' for more details

그런 다음 "hello world"C 프로그램을 시도하고 컴파일시 다음 오류가 발생했습니다.

nishant@nishant-Inspiron-1545:~$ gcc -g -o hello hello.c 
/usr/local/bin/ld: this linker was not configured to use sysroots
collect2: error: ld returned 1 exit status

이 오류가 왜 발생했는지 잘 모르겠습니다. 포럼에서 이에 대한 만족스러운 답변을 찾을 수 없습니다. 누군가 도와주세요. 감사


1
'./configure'스크립트를 실행할 때 CPPFLAGS에 대해 실수로 CXXFLAGS를 지정했을 때이 오류가 발생했습니다. 따라서 오류 메시지는 정확한 오류를 설명하지 않습니다.
RajaRaviVarma

답변:


12

당신이 GNU 링커의 비 - 표준 버전이 것 같습니다 ld당신의 /usr/local/bin(아마도 소스에서 설치) 디렉터리를 PATH 환경 변수는 설정되는 시스템 발견 그 '시스템'버전 이전 버전 (에 있어야한다 /usr/bin/ld) . 표준 시스템 버전의 빌드 도구를 사용하여 빌드하려는 경우 PATH 환경 변수를 /usr/bin미리 검색하여 미리 검색해야합니다./usr/local/bin

PATH 변수를 영구적으로 수정하려면 ~ / .bashrc 파일에서 원래 설정 한 위치를 찾아야하지만 다른 위치도 가능합니다. 또는이 빌드에 대한 임시 수정이 필요한 경우 시도해 볼 수 있습니다

export PATH="/usr/bin:$PATH"

실행하기 전에 터미널에서 ./configure

그러나 때로는 귀하 (또는 시스템 관리자)가 도구 버전을 사용하기를 원하는 좋은 이유가 있습니다. /usr/local그렇다면 ld나머지 빌드 체인과 호환되지 않는 이유를 찾아야합니다. it-업무용 또는 학교용 시스템 인 경우 시스템 관리자 또는 IT 부서에 문의하십시오.


9
일반적으로는 /usr/local/bin앞서입니다 /usr/binPATH좋은 이유 : 프로그램이 분포 버전이 우선하는 경우 로컬에 설치된 가진 아무 소용이 없다. 문제를 찾아내는 것이 좋지만 권장되는 해결 방법은 PATH를 변경하는 것이 아니라 손상된 부분을 제거하거나 수정하는 것 /usr/local/bin/ld입니다.
Gilles 'SO- 악마 중지'

@steeldriver : ~ / .bashrc에 없으면 "export PATH ="/ usr / bin : $ PATH ""행을 복사하여 붙여 넣을 수 있습니다. 아니면 다른 프로그램에 문제가 있습니까?
naka

@Gilles 나는 그것이 장기적으로 더 많은 혼란을 일으킬 것이다, 내가 그 무리를 줄 수 @naka 의견을 반영하기 위해 내 대답을 편집 한 - 당신이 질 '의견의 주를 가지고 밖으로 발견해야 하는 이유 당신의 관리자가를 사용하는 PATH를 설정 한 버전 :/usr/local
스틸 드라이버

3
나는 같은 오류가 발생했습니다 ... 이것은 나를 위해 작동하지 않았습니다 ... which ld반환 만 /usr/bin/ld….
isomorphismes

9

위의 복잡한 이유와 달리 필자의 경우 단순히 g++설치 되지 않은 경우였습니다 . 이상하게도 오류 메시지는 OP에서 설명한 것과 동일합니다.

configure: error: C compiler cannot create executables

어쨌든 g ++을 설치 하여이 문제를 해결했습니다.

sudo apt-get install g++

0

시스템을 업데이트하고 ld 및 컴파일러 ( gcc )를 제공하는 패키지를 다시 설치하십시오 . 를 실행하십시오 prelink -au && depmod -a. 그런 다음 재부팅하십시오.

/etc/systemctl배포판이 설정하는 곳이나 어디에서나 사전 링크 를 비활성화하거나 재구성해야 할 수도 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.