Preprocessor includes have nothing to do with linking. This is a common misconception.
There is no assumption anywhere that one include corresponds to something being linked. Notice that the standard library has lots of headers, but generally only consists of a single library when the linking happens.
With e.g. gcc (and most other compilers) you can compile a C file first, then compile a bunch of other C files, then finally do the linking of all the object files with any required external libraries. When you do the linking, you're operating on already-compiled files (object files and libraries); these files know nothing about the order in which the preprocessor directives appeared in the original source, that is long gone.