2014-12-03 1 views
10

매우 자주 collect2: error: ld returned 1 exit status 오류가 표시됩니다. 예를 들어, 나는 다음과 같은 코드 조각 실행되었다"collect2 : 오류 : ld가 1 종료 상태를 반환했습니다"는 의미는 무엇입니까?

void main() { 
    char i; 

    printf("ENTER i"); 
    scanf("%c",&i); 

    clrscr(); 

    switch(i) { 
    default: 
     printf("\nHi..\n"); 
     break; 
    case 1: 
     printf("\n\na"); 
     break; 
    case 2: 
     printf("\nb\n"); 
     break; 
    case 3: 
     printf("\nc"); 
     break; 
    } 
} 

을하고 난이 있어요 :

main.c:(.text+0x33): undefined reference to `clrscr'      
collect2: error: ld returned 1 exit status 

것은 무엇을 의미 하는가?

+0

clrscr()의 시도를 사용 TurboC를 사용하는 경우 'conio.h'를 포함하여. GCC를 사용하고 있다면, 이것을 포함해도 작동하지 않을 것입니다. 또한,'void main()'대신'int main()'을 사용하고 마지막에'return 0;'을 추가하십시오. 'Hi ..'를 인쇄하고 무엇이든 끝내면 끝내야합니다. –

답변

29

에서 일을 해야하는 데 사용 오류는 이전 오류의 결과이다. 귀하의 예제에서 이전 오류 - "clrscr '에 대한 정의되지 않은 참조 -이게 진짜입니다. 종료 상태 오류는 빌드 프로세스의 연결 단계에서 오류가 발생했음을 나타냅니다. 일반적으로 종료 상태 0은 성공을 의미하고 종료 상태> 0은 오류를 의미합니다. 대부분의 경우 도구는 발견 된 오류 수를 종료 상태로 반환합니다. 프로그램을 빌드 할 때 많은 개별 도구가 실행되어 최종 실행 파일을 작성할 수 있습니다. 이러한 도구 중 하나는 "ld"이며, 발견 된 오류 (clrscr reference missing)를 먼저보고 한 다음 종료 상태를 호출자에게 반환합니다. 호출자는 "ld"가 0이 아닌 종료 상태를 반환하고이를보고합니다.

+1

안녕 Sorowka, 고마워! "많은 경우 도구는 종료 상태로 발견 된 오류의 수를 반환합니다"는 의미는 2 개의 오류가있는 경우 ld가 반환 한 2 개의 종료 상태를 반환한다는 것을 의미합니다. – user3682120

+1

정확함 –

+1

'/ usr/tmp /'에 충분한 공간이 없을 때와 동일한 오류 ('collect2 : error : ld returned 1 exit status')가 발생할 수 있습니다. 왜냐하면 링커는 임시 파일을 생성 할 수 없기 때문입니다. –

1

clrscr은 표준 C 함수가 아닙니다. 인터넷에 따르면, 기존 볼랜드 C로 "신분증 1 개 종료 상태를 반환"
Is clrscr(); a function in C++?

-1

는 GCC에 사용하는 경우, stdlib.h에 정의 된 system 라이브러리 기능을 사용해보십시오 :

void main() 
{ 
    char i; 
    printf("ENTER i"); 
    scanf("%c",&i); 
    system ("clear"); 

    // Your implementation begins here. 

} 
+1

답장을 보내 주셔서 감사합니다.하지만 조금 부적절했습니다. – user3682120

4

을 당신이 가지고 상황에서 :

#include <stdlib.h> 
int system (const char *command); 

이것은 당신이해야 할 일입니다 누락 된 기호에 대한 참조 그러나 어떤 경우에는 ld가 오류 정보를 제공하지 않습니다. 당신이 (LDFLAGS) 당신의 $에 다음 매개 변수를 추가, LD에서 제공하는 정보를 확장합니다

-Wl,-V 
+1

OS XI에서는'-Wl, -t'를'ld' 옵션으로 사용해야만했는데'-V' 옵션으로 인식하지 못했습니다. 그러나'-t'는 링크하려고하는 모든 라이브러리를 나열하게합니다. 문제를 일으키고'-V'가하는 일에 참여할 수있게 해줍니다) –

-1

은 다음과 같습니다 : #include<stdlib.h>

System("cls") 대신

관련 문제