你好,游客 登录 注册 搜索
背景:
阅读新闻

C语言调试过程中Duplicate Symbol错误分析

[日期:2016-10-07] 来源:Linux社区  作者:tylerzhang [字体: ]

说明:在我们调试C语言的过程中,经常会遇到duplicate symbol错误(在Mac平台下利用Xcode集成开发环境)。如下图:

           

一.简单分析一下C语言程序的开发步骤。

由上图我们可以看出C语言由编写源程序->编译->链接->运行几个步骤进行。

编写源程序:

C语言的源文件的扩展名为.c,源文件以ASCII的形式存储,不能直接被计算机执行。

编译:

1.把C语言源程序翻译成计算机可以识别的二进制代码,由编译器完成。

2.编译的同时进行语法检查,如果发现语法错误,则编译失败。如果编译成功,生成扩展名为“.obj”的目标文件。

3.每个源文件是单独进行编译的,如果一个项目中有多个.c源文件,则会生成多个.obj目标文件。

链接:

1.将所有有关联的obj目标文件,及系统提供的C库函数等组合在一起生成可执行文件。

2.生成的可执行文件的文件名与源程序文件名形同,计算机可以直接执行。

运行:

双击即可运行生成的可执行文件。

二.错误原因

源文件中引入的另一个源文件。

例如:在main.c中#include<test.c>

三.错误分析

由于编译的过程是对每个源文件单独进行编译的,如果单个源文件没有语法错误,编译就会通过。而链接过程是将所有有关联的obj目标文件及系统的库函数组合在一起。而include预处理指令类似与代码的拷贝,并且C语言默认情况下不允许重复定义函数,因此引入的源文件中函数在链接时会报重复定义的错误。也就是我们看到的duplicate symbol错误。

小伙伴们,以后要注意了,在C语言开发中,不允许在源文件中引入其他的源文件,只可以引入头文件呦! 

本文永久更新链接地址http://www.linuxidc.com/Linux/2016-10/135766.htm

linux
相关资讯       C语言调试  Duplicate Symbol错误 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款