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



我有点难倒了。这是我从gcc

得到的错误<>之前GCC -lm -g -o bin/tomshell obj/tomshell .oobj/tomashell。在函数' _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): relocation 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:/构建/buildd-eglibc_2.11.2-10-i386-GapcyD/eglibc-2.11.2/csu/. ./sysdeps/i386/elf/开始。S:第一次是在这里定义的Obj/tomasshell .o:(.rodata+0x0): ' _fp_hw'的多个定义/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o: (.rodata + 0 x0):首先定义obj/tomashell。在函数' _fini'中:(.fini+0x0):多重定义' _fini'/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crti.o: (.fini + 0 x0):首先定义obj/tomasshell .o:(.rodata+0x4):多个定义' _IO_stdin_used'/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o: (.rodata.cst4 + 0 x0):首先定义obj/tomashell。在函数' __data_start'中:(.data+0x0): __data_start的多个定义/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crt1.o: (. data + 0 x0):首先定义obj/tomashell。在函数' __data_start'中:(.data+0x4): __dso_handle的多个定义/usr/lib/gcc/i486-linux-gnu/4.4.5/crtbegin.o:(.data+0x0):此处首次定义obj/tomashell。在函数' _init'中:(.init+0x0):多个_init定义/usr/lib/gcc/i486-linux-gnu/4.4.5/../../../../lib/crti.o: (.init + 0 x0):首先定义/usr/lib/gcc/i486-linux-gnu/4.4.5/crtend.o:(.dtors+0x0):多重定义' __DTOR_END__'Obj/tomasshell .o:(. doctors +0x4):首先在这里定义Collect2: ld返回1退出状态make: *** [bin/tomshell] Error之前

这是我的整个代码文件:

#include <stdlib.h>
#include <stdio.h>
int main()
{
    printf("Hello, world!");
}

我不知道为什么这不能编译。

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

最新更新