With a "C" in it. C++ changes the name of the function to include its type, which is called name mangling. The "C" tells the compiler not to mangle. The assembler doesn't mangle, so the compiler needs to know not to.

Incidentally, the mangling is how the linker is able to tell you the parameter types of the hello it is looking for.

Edit Do strings main.o |grep hello on your current object file and you will see a reference to hello with all sorts of funny characters after it. That is the mangled name.