http://fixunix.com/unix/523390-entry-point.html :
The entry point is the start of the code space (unless otherwise
specified with a linker option), which for executables is almost
always crt0. The c compiler system will have crt0.o in its standard
link area, very dependant on the system for where this is. crt0 is the
one that initializes the standard C lib, and eventually calls main().
There may be additional stages depending on the language (ie. crt1,
crt2, etc).
All linkers have many options to specify these things, and most are
pretty different than one another.
There are additional init link areas for static constructors and
destructors in the executable file, usually specified with #pragmas to
the compiler to be gathered together in the link stage.
shared libraries don't have an entry point on unix systems. They have
static constructors/destructures, again in seperate areas in the
object file to be gathered together properly in the link stage.
The C compiler system is the one area where different unix systems are
vastly different than one another. Even though many use GCC
now-a-days, even then, they get installed and used very differently
(ie. Darwin vs. Linux x86 systems).
And the bigger vendors have their own compiler suites (ie. Sun and HP)
that are all different than GCC as well.
You'll really have to study the specific system you are interested in
for their documentation on the C compiler system for this sort of info.
http://en.wikipedia.org/wiki/Entry_point