Nevermind I found https://www.reddit.com/r/asm/comments/opbsm0/no_such_file_or_directory_when_trying_to_run_a/
The answer was the dynamic linker didn't exist. Ld was using the wrong path for some reason. Fixed it and it works now.
ld --dynamic-linker=/lib64/ld-linux-x86-64.so.2 -lc ./Cat.bin ./Dog.bin ./Cow.bin ./Util.bin ./AnimalSounds.bin -o animalprogram.bin
is what finally worked