What does "collect2: error: ld returned 1 exit status" mean? Ask Question

What does

I see the error collect2: error: ld returned 1 exit status very often. For example, I was trying to build the following snippet of code:

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;
  }
}

And I got this:

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

What does it mean?

ベストアンサー1

The ld returned 1 exit status error is the consequence of previous errors. In your example, there is an earlier error—undefined reference to 'clrscr'—and this is the real one. The exit status error just signals that the linking step in the build process encountered some errors. Normally, exit status 0 means success, and exit status > 0 means errors.

When you build your program, multiple tools may be run as separate steps to create the final executable. In your case, one of those tools is ld, which first reports the error it found (clrscr reference missing), and then it returns the exit status. Since the exit status is > 0, it means an error and is reported.

In many cases, tools return the number of errors they encountered as the exit status. So if the ld tool finds two errors, its exit status would be 2.

おすすめ記事