crt1.o: In function `_start': - undefined reference to `main' in Linux
linux, program-entry-point, undefined-reference
Solution
Try adding `-nostartfiles` to your linker options, i.e.
$(LINK) -nostartfiles -g ...
From the gcc documentation:
-nostartfiles
Do not use the standard system startup files when linking. The standard system libraries are used normally, unless -nostdlib or -nodefaultlibs is used.
This causes `crt1.o` not to be linked (it's normally linked by default) - normally only used when you implement your own `_start` code.
Problem
I am porting an application from Solaris to Linux The object files which are linked do not have a main() defined. But compilation and linking is done properly in Solaris and executable is generated. In Linux I get this error ``` /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' ``` My problem is, I cannot include new .c/.o files since its a huge application and has been running for years. How can I get rid of this error? Code extractes of makefile: ``` RPCAPPN = api LINK = cc $(RPCAPPN)_server: $(RPCAPIOBJ) $(LINK) -g $(RPCAPIOBJ) -o $(RPCAPPN)_server $(IDALIBS) $(LIBS) $(ORALIBS) $(COMMONLIB) $(LIBAPI) $(CCLIB) $(THREADLIB) $(DBSERVERLIB) $(ENCLIB) ```