External variables of a C object file are global variables of another object file.
When all needed object files, either true object file (.o) or object files stored in libraries (.a or .so or ....) are linked together to create an executable, there is no more external variables but only global variables of all the needed objects.
Note that when linking to create an executable using a C compiler, some libraries are silently added (libC.a and others maybe) containing commonly used "external" variables like (stdin, stdout, stderr, errno ...).
If some external variables are not found in any object file, the linker failed to create an executable.