tags:

views:

55

answers:

2

When I compile my code,I write gcc -g -Wall dene2 dene2.c in the console. Then gcc emits some text on the screen. I don't understand what this output means (I couldn't think of a meaningful title for that reason, sorry).

I have tried Google searching but haven't had any luck.

I'm not asking for a detailed examination of all of the output below. Just show me "how to catch fish".

dene2: In function `_start':
    /build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start.S:65: multiple 
       definition of `_start'
   /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o:/build/buildd/eglibc-2.10.1
      /csu/../sysdeps/i386/elf/start.S:65: first defined here
dene2:(.rodata+0x0): multiple definition of `_fp_hw'
   /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o:(.rodata+0x0): first 
     defined here
dene2: In function `_fini':
   (.fini+0x0): multiple definition of `_fini'
   /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crti.o:(.fini+0x0): first defined 
      here
dene2:(.rodata+0x4): multiple definition of `_IO_stdin_used'
   /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o:(.rodata.cst4+0x0): first 
     defined here
dene2: In function `__data_start':
 (.data+0x0): multiple definition of `__data_start'
   /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o:(.data+0x0): first defined 
     here
dene2: In function `__data_start':
 (.data+0x4): multiple definition of `__dso_handle'
  /usr/lib/gcc/i486-linux-gnu/4.4.1/crtbegin.o:(.data+0x0): first defined here
dene2: In function `_init':
 (.init+0x0): multiple definition of `_init'
  /usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crti.o:(.init+0x0): first defined 
       here
  /tmp/ccMlGkkV.o: In function `main':
  /home/fatih/Desktop/dene2.c:5: multiple definition of `main'
dene2:(.text+0xb4): first defined here
  /usr/lib/gcc/i486-linux-gnu/4.4.1/crtend.o:(.dtors+0x0): multiple definition of 
     `__DTOR_END__'
dene2:(.dtors+0x4): first defined here
  collect2: ld returned 1 exit status
+3  A: 

You are missing the -o in your compile line.

gcc -g -Wall -o dene2 dene2.c

The linker is trying to link your executable together with the source code you're current compiling, resulting in multiple definitions.

WhirlWind
+4  A: 

I think you probably want a -o in that command line:

gcc -g -Wall -o dene2 dene2.c

What you have there without the -o is trying to link dene2 with the result of compiling dene2.c. dene2 is probably left over in your directory from previous build attempt. That's why you're seeing all the duplicate symbol errors.

Carl Norum