I assume being linux the linker makes a .o, first insure the make (script) does make an .o (sometimes, making a library, separate .o are not made or not made for one of all of the .cpp)
Insure this .cpp is not merely included into another .cpp: if it is there will be no separate object file for it but there will be a trace for it whenever execution passes through it. You should know how you can generate a separate object file by hand.
The file does not define main(), it defines ?1 function. It has various "compiler markings" (like HIDDEN), so the linker may treat it specially even if any .o file contains the function it defines. There's a 50% chance this is the issue.
It appears to be part of the library loader which, by android guidelines, you aren't allowed to alter. You shouldn't have a reason for tracing into it. I can say though even if you persist that the linux loader is "properly" changed by using it's configuration files (to get specific needs done), rather than hacking the loader code.
That may be all very basic material for you you already know. I have no idea.