Hi, I am trying to compile a small program with the aim of reducing the output file size on OSX: int main(void) { return 99; } I compile with: gcc tiny.c and run : ./a.out echo $? 99 But: ls -al a.out Reveals a file of 8664 bytes. (A bit much! Strip reduces this only by ~100 bytes!) Windows/MSVC does something similar, but if you disable the standard libraries, you get a executable of 200 or so bytes. I tried the same with GCC on OSX, but I get: gcc tiny.c -nostdlib ld: could not find entry point "start" (perhaps missing crt1.o) collect2: ld returned 1 exit status If I try and pass the entry point to LD, I get: gcc tiny.c -c -nostdlib -m32 ld tiny.o -e main ld: could not find entry point "main" (perhaps missing crt1.o) for inferred architecture i386 How can you tell the linker what the entry point function is? If anyone has any tips on how I can bring the file size down I would be keen to hear it. Thanks, -Adrian