* Cong Monkey: >> The easiest way is to link against an existing libc, or at least its >> startup code. > > If I use custom entry point, the argc and argv I get is very strange, > it's not the same as I get from normally main entry point! That's expected. You have to implement your own startup code. It's the reason why linking against an existing libc is the easiest solution.