当前位置:  技术问答>linux和unix

今天这样编译了一个程序,然后源程序就消失掉了...

    来源: 互联网  发布时间:2015-11-14

    本文导语:  例如:我的目录中有test.c 和一个编译好的test (使用 gcc -o test test.c) 然后我修改了一下 test.c 想重新编译一下,结果写成了:gcc -o test.c test 于是,报了一堆错误后我的test.c消失了。 我用 2>log 把错误都记下...

例如:我的目录中有test.c 和一个编译好的test (使用 gcc -o test test.c)
然后我修改了一下 test.c 想重新编译一下,结果写成了:gcc -o test.c test
于是,报了一堆错误后我的test.c消失了。

我用
2>log
把错误都记下来啦,大家看看有什么可以告诉我的:

test(.rodata+0x0):/usr/src/build/90613-i386/BUILD/glibc-2.2.4/csu/init.c: multiple definition of `_fp_hw'
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crt1.o(.rodata+0x0): first defined here
test: In function `_init':
test(.init+0x0): multiple definition of `_init'
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crti.o(.init+0x0): first defined here
test: In function `_start':
test(.text+0x0): multiple definition of `_start'
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crt1.o(.text+0x0): first defined here
test(.fini+0x0):/usr/src/build/90613-i386/BUILD/glibc-2.2.4/csu/init.c: multiple definition of `_fini'
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crti.o(.fini+0x0): first defined here
test(.got+0x0):/usr/src/build/90613-i386/BUILD/glibc-2.2.4/csu/init.c: multiple definition of `_GLOBAL_OFFSET_TABLE_'
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crti.o(.got.plt+0x0): first defined here
test(.rodata+0x4):/usr/src/build/90613-i386/BUILD/glibc-2.2.4/csu/init.c: multiple definition of `_IO_stdin_used'
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crt1.o(.rodata+0x4): first defined here
test(.data+0x0):/usr/src/build/90613-i386/BUILD/glibc-2.2.4/csu/init.c: multiple definition of `__data_start'
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crt1.o(.data+0x0): first defined here
/usr/lib/gcc-lib/i386-redhat-linux/2.96/../../../crti.o(.dynamic+0x0): multiple definition of `_DYNAMIC'
test(.dynamic+0x0):/usr/src/build/90613-i386/BUILD/glibc-2.2.4/csu/init.c: first defined here
collect2: ld returned 1 exit status

|
编译的时候要把你给出的源文件和库文件进行连接,生成的elf格式文件(可执行)里面就有各个函数的函数可执行码。

你把一个已经是elf格式的文件再与库文件连接,于是库函数就出现了两次,这就是重复定义的原因。

test.c文件被用作输出文件,但是编译出错了,于是它就被删除了。如果编译成功,它就被生成的新elf文件所取代。

|
目标文件是要清掉的

|
-o 后面跟目标文件,覆盖了test.c








|
弄反了。

是gcc -o test test.c

写成gcc -o test.c test的话,gcc就会试图把test编译成test.c,于是就出现以上的错误。

    
 
 

您可能感兴趣的文章:

  • unix环境高级编程》源程序编译的讨论,编译成功、不成功的都请进!!!
  • 请问这个源程序要如何编译? Spidermonkey1.6
  • 怎样用jb7将源程序编译成exe文件?
  • 请教cygwin编译源程序问题!
  • 小弟刚接触java,不知道大家现在都用什么编译源程序?
  • 求助,怎样将反编译得到的汇编对应到源程序?
  • Linux c源程序编译(gcc gdb)
  • 如何编译QT的源程序啊
  • 我找了个USB转串口的驱动源程序,但不知如何编译安装,哪位好心人帮帮我?
  • 今天第一次接触linux和gcc,看了点资料,试着编译一个源程序,却出现找不到库文件
  • linux下怎么编译java源程序?
  • UNIX下 用CC如何编译多个c语言源程序文件
  • =====请问怎样将Java 源程序编译成 Win32 可执行文件?========
  • 怎么在redhat7.3下安装源程序(从光盘)及重新编译它们?100分
  • 关于jdk1.4.1版编译时的问题,附有源程序和编译错误,帮帮忙!!!!!
  • windows下面如何用VC编译开源项目gzip源程序?
  • Think in java 源程序编译,满脸的畸形字符,最后出现一百个错误!!!!!
  • 源程序可以编译通过,但里面的String s 全都是空的,这是怎么回事?
  • 另一个Think in java书中源程序编译,满脸的畸形字符,最后出现一百个错误!!!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux/centos源码安装nginx编译配置选项参数介绍
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常. iis7站长之家
  • 高速的网络抓包库PF_ring介绍及编译安装
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • 问:关于gcc编译器和g++编译器
  • 嵌入式linux开发:一段代码在windows平台用VC编译运行正常,在linux平台用gcc编译运行正常,但是用arm-linux-gcc编译在嵌入式板子上运行就不正常.
  • 在cygwin编译驱动程序要不要交叉编译?
  • 关于如何把编译进内核的编译成模块
  • C编译器 c++编译器 wieldylcc
  • Linux下gcc编译时,如何以静态链接的形式编译?
  • PROC开发时 //注释编译不通过 如何设置使用cpp编译。
  • 编译失败后如何再继续编译
  • 编译qt-x11,最后编译生成可执行文件时候,make出错
  • 如何查看已编译安装软件的编译命令行
  • 请问哪里有反编译.class文件的反编译器?
  • 用Jdk编译时出现提示要加 -deprecation 再编译,请教??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3