In most programming languages, C included, the "undefined reference" usually means exactly that. The name used is not defined anywhere previously. It is either not declared at all, or has not encountered a place previously where it was given an actual value.
This might be because it just does not exist, or was not seen because it was not in included header, or it was not present in the headers, or some necessary program was not in the set of those "included" at the beginning.
It can even be because the name was spelled wrongly, or was case-sensitive.