gcc在一个小小的hello world程序中返回了大量的错误

我有点难过。 这是我从gcc得到的错误

 gcc -lm -g -o bin / tomashell obj / tomashell.o
 obj / tomashell.o:在函数`_start'中:
 (.text + 0x0):`_start'的多重定义
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位0具有无效的符号索引12
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位1具有无效的符号索引13
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位2具有无效的符号索引2
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位3具有无效的符号索引2
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位4具有无效的符号索引12
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位5具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位6具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位7具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位8具有无效的符号索引2
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位9具有无效的符号索引2
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位10具有无效的符号索引13
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位11具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位12具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位13具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位14具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位15具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位16具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位17具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位18具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位19具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位20具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位21具有无效的符号索引14
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_info):重定位22具有无效的符号索引22
 / usr / bin / ld:/usr/lib/debug/usr/lib/crt1.o(.debug_line):重定位0具有无效的符号索引2
 /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o:/build/buildd-eglibc_2.11.2-10-i386-GapcyD/ eglibc-2.11.2 / csu /../ sysdeps / i386 / elf / start.S:119:首先在这里定义
 obj / tomashell.o :(。rodata + 0x0):`_fp_hw'的多重定义
 /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o:(.rodata+0x0):首先在这里定义
 obj / tomashell.o:在函数`_fini'中:
 (.fini + 0x0):`_fini'的多重定义
 /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crti.o:(.fini+0x0):首先在这里定义
 obj / tomashell.o :(。rodata + 0x4):`_IO_stdin_used'的多重定义
 /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o:(.rodata.cst4+0x0):首先在这里定义
 obj / tomashell.o:在函数`__data_start'中:
 (.data + 0x0):`__data_start'的多重定义
 /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o:(.data+0x0):首先在这里定义
 obj / tomashell.o:在函数`__data_start'中:
 (.data + 0x4):`__dso_handle'的多重定义
 /usr/lib/gcc/i486-linux-gnu/4.4.5/crtbegin.o:(.data+0x0):首先在这里定义
 obj / tomashell.o:在函数`_init'中:
 (.init + 0x0):`_init'的多重定义
 /usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crti.o:(.init+0x0):首先在这里定义
 /usr/lib/gcc/i486-linux-gnu/4.4.5/crtend.o:(.dtors+0x0):`__DTOR_END__'的多重定义
 obj / tomashell.o :(。dtors + 0x4):首先在这里定义
 collect2:ld返回1退出状态
 make:*** [bin / tomashell]错误1

这是我的整个代码文件:

#include  #include  int main() { printf("Hello, world!"); } 

我没有丝毫的线索,为什么这不是编译。 我正在编译所有其他C应用程序。

obj/tomashell.o不是目标文件,而是可执行文件。 您可能在编译时忘记使用-c ,因此(默认情况下)gcc输出可执行文件而不是目标文件。