Long ago, on a PDP-11 far, far away...
The maximum size of an extern symbol for the linker was either 7 or 8 chars. I forget which, but it's close enough for government work, as the saying goes.
Furthermore, the C compiler would prefix a symbol like strcmp with an '_' so it wouldn't collide with any assembler symbol, where the naming convention was to not start any extern symbol with '_'. So that left only 6 or 7 significant characters for C function names, extern globals, and the like. If the C compiler was given a longer symbol name it would simply truncate it to the max allowed by the linker.
So if you go through and look at the symbol names in the C standard libraries, especially the libs that have been around the longest, you'll find that symbols are unique within the first 6 or 7 characters. Thus, you have things like strcmp(), strncmp(), strlcmp(), where a difference is always within the first 6 or 7 chars.
Small symbols also meant a small symbol-table size for shared libraries, an important consideration when a PDP-11 with a total of 256KB of RAM and a 64KB addressable address space per process was not uncommon as a time-sharing computer for a developer team. That was also when 80 MB of hard drive space meant a
disk drive the size of a washing machine, and a stack of spinning aluminum platters 14 inches across.
It's striking how far things have advanced since then, but it's also striking how much could be accomplished with what now seems like so little.