This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: undefined reference to `main'


Kai Ruottu wrote:
> vinod wrote:
>
>> When I using gcc to compile my code.c to code , I got the error msg as
>> follows :
>> /usr/lib/gcc/i486-linux-gnu/4.3.2/../../../../lib/crt1.o: In function
>> `_start':
>> (.text+0x18): undefined reference to `main'
>> collect2: ld returned 1 exit status
>>
>> What can I do now, any suggestion?
>
> Please read the book :
>
> http://www.crasseux.com/books/ctut.pdf
>
> also a manual for glibc, GCC etc. could be useful in your own library...
> Or reading them online. Like :
>
> http://www.gnu.org/software/libc/manual/
>
The solution for this depends on what you want to do:

1) if you want to build an executable from your source code file code.c,
you must obviously add a main function which then calls on of your
currently used main functions (whatever name that is) - already suggested

2) if main is defined in another source file - which I guess is true in
your case - you need to compile the file code.c only (by using the -c
compiler flag) and then link all object files to your executable.

As an example for the second solution. Assume you have two source files
main.c (defines the main function) and code.c. To build an executable,
you either use

    gcc code.c main.c -o <exec_name>

or, if you want to compile in single steps

    gcc code.c -c (produces code.o)
    gcc main.c -c (produces main.o)
    gcc code.o main.o -c <exec_name>

For the last step, you could theoretically also use ld to link the
executable, but I would not recommend this because you need to specify a
bunch of linker flags which are used by gcc any.

Hope that helps,
Andi


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]