linux编译出.o文件后为什么运行时错出?ubuntu
pyt@pyt-Ideapad-S205:~/table$gccfirst.c-ofirst.opyt@pyt-Ideapad-S205:~/table$gccfirst...
pyt@pyt-Ideapad-S205:~/table$ gcc first.c -o first.o
pyt@pyt-Ideapad-S205:~/table$ gcc first.o
first.o:在函数‘_fini’中:
(.fini+0x0): `_fini'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crti.o:(.fini+0x0):第一次在此定义
first.o:在函数‘data_start’中:
(.data+0x0): `__data_start'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o:(.data+0x0):第一次在此定义
first.o:在函数‘data_start’中:
(.data+0x4): `__dso_handle'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/crtbegin.o:(.data+0x0):第一次在此定义
first.o:(.rodata+0x4): `_IO_stdin_used'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o:(.rodata.cst4+0x0):第一次在此定义
first.o:在函数‘_start’中:
(.text+0x0): `_start'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o:(.text+0x0):第一次在此定义
first.o:(.rodata+0x0): `_fp_hw'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o:(.rodata+0x0):第一次在此定义
first.o:在函数‘_init’中:
(.init+0x0): `_init'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crti.o:(.init+0x0):第一次在此定义
/usr/lib/gcc/i686-linux-gnu/4.7/crtend.o:(.tm_clone_table+0x0): `__TMC_END__'被多次定义
first.o:(.data+0x8):第一次在此定义
/usr/bin/ld: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored.
/usr/bin/ld : 在first.o (.eh_frame)中发生错误; .eh_frame_hdr表格不会被创建。
collect2: 错误: ld 返回 1
pyt@pyt-Ideapad-S205:~/table$
pyt@pyt-Ideapad-S205:~/table$
刚学的linux ubuntu .10的 展开
pyt@pyt-Ideapad-S205:~/table$ gcc first.o
first.o:在函数‘_fini’中:
(.fini+0x0): `_fini'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crti.o:(.fini+0x0):第一次在此定义
first.o:在函数‘data_start’中:
(.data+0x0): `__data_start'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o:(.data+0x0):第一次在此定义
first.o:在函数‘data_start’中:
(.data+0x4): `__dso_handle'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/crtbegin.o:(.data+0x0):第一次在此定义
first.o:(.rodata+0x4): `_IO_stdin_used'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o:(.rodata.cst4+0x0):第一次在此定义
first.o:在函数‘_start’中:
(.text+0x0): `_start'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o:(.text+0x0):第一次在此定义
first.o:(.rodata+0x0): `_fp_hw'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crt1.o:(.rodata+0x0):第一次在此定义
first.o:在函数‘_init’中:
(.init+0x0): `_init'被多次定义
/usr/lib/gcc/i686-linux-gnu/4.7/../../../i386-linux-gnu/crti.o:(.init+0x0):第一次在此定义
/usr/lib/gcc/i686-linux-gnu/4.7/crtend.o:(.tm_clone_table+0x0): `__TMC_END__'被多次定义
first.o:(.data+0x8):第一次在此定义
/usr/bin/ld: warning: Cannot create .eh_frame_hdr section, --eh-frame-hdr ignored.
/usr/bin/ld : 在first.o (.eh_frame)中发生错误; .eh_frame_hdr表格不会被创建。
collect2: 错误: ld 返回 1
pyt@pyt-Ideapad-S205:~/table$
pyt@pyt-Ideapad-S205:~/table$
刚学的linux ubuntu .10的 展开
3个回答
2012-11-04
展开全部
gcc first.c -o first.o
gcc first.o
这两个命令写错了。-o参数就是指执行文件的输出文件。所以用了-o,就不用第二条命令了。这一个命令把编译,链接两步一起做。
用两条命令写 gcc -c first.c gcc first.o -o first
主意第一条命令的-c,后面输入源文件名。.o文件与源文件同名。-o如果没有指定,linux默认为a.out为可执行文件名。
gcc first.o
这两个命令写错了。-o参数就是指执行文件的输出文件。所以用了-o,就不用第二条命令了。这一个命令把编译,链接两步一起做。
用两条命令写 gcc -c first.c gcc first.o -o first
主意第一条命令的-c,后面输入源文件名。.o文件与源文件同名。-o如果没有指定,linux默认为a.out为可执行文件名。
展开全部
.o 是可重定位目标程序, 虽然打包了机器语言指令,但它还需要和其它的库(比如你用的printf())做链接,最终生成可执行目标文件,这样才可能被加载到内存中由系统执行.
你的程序里用到printf(),但你自己并没有实现它,实现在系统的库文件中,因此可链接后才能用嘛.
你的程序里用到printf(),但你自己并没有实现它,实现在系统的库文件中,因此可链接后才能用嘛.
追问
怎么链接呢?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
$ gcc first.c -o first.o
用于编译生成可执行结果 first.o
要执行结果的话,不是
$ gcc first.o
而是
$ ./first.o
用于编译生成可执行结果 first.o
要执行结果的话,不是
$ gcc first.o
而是
$ ./first.o
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |