I haven't touched on c++ for a while and this question might be stupid but it indeed bothers me for a while.

Suppose I have the following c program:

```
#include <stdio.h>

int main()
{
  int i;
  for(i=0; i<10; i++)
  {
    printf("Hello World!\n");
  }
  return 0;
}

```

I know the reason I include `stdio.h` is because I call `printf` in `main` but I'm wondering how compiler would know where to find the implementation of `printf()` during the compilation? `stdio.h` only provides function prototype but what exactly is happening during the compilation? 

Will there be certain prefixed path that compiler knows to search for the implementation of `printf`? If so, how to find them?

Thanks much!