未加星标

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

字体大小 | |
[系统(linux) 所属分类 系统(linux) | 发布者 店小二03 | 时间 20161001 | 作者 红领巾 ] 0人收藏点击收藏

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


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

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

C语言调试过程中Duplicate Symbol错误分析
由上图我们可以看出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


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

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

主题: C语言编译器Linux
分页:12
转载请注明
本文标题:C语言调试过程中Duplicate Symbol错误分析
本站链接:http://www.codesec.net/view/483423.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(25)