Look at the executable in an editor. A hex-editor would be good, but an ordinary text editor will do. Not too far from the beginning of the file (244 bytes?), you should see something like "lib/ld-linux.so.2". That's the file that's not being found, I strongly suspect. See if you can find such a file, or similar - version number might be different. I suspect, on a 64-bit system, you probably have two versions - one for 64-bit and one for 32-bit. You want the 32-bit version, for this. That's the "interpreter" or "dynamic linker" which allows your program to find "printf", or anything else we're using from a dynamic library. That's the parameter we should be using to the "-I" switch - I told you "-I/lib/ld-linux.so.2" but that might not be right for your system... maybe /lib32/... or something(?).
That's a very confusing error, "no such file or directory", when you can see the file right there! I don't recall who tipped me off to use the "-I" switch - it isn't something you're likely to "figure out" or read in the Friendly Manual.
This isn't the way we're "supposed" to do it. C expects to run that "startup" code which contains the "_start" label and calls "main". It is reasonable to think that we "need" that startup code before "printf" or other libc (or other dynamic library) functions are going to work correctly. My experience is that it works fine without it - I haven't found a case yet where it doesn't, but I keep expecting to. Maybe this is one...
FWIW, a really "invalid" executable (a dos .com file or a Windows executable, say) produces "can't execute binary file", from what I've seen. Linux has got lots of error messages - every so often it coughs up one I haven't seen before. I'm pretty sure "no such file or directory" is from not finding the dynamic linker, but there may be other reasons, too - I'm not familiar with a 64-bit system... gotta upgrade my hardware, one of these days!
Don't worry about "bothering" me! I'm not forced to reply unless I feel like it...
Best,
Frank