您的当前位置:首页正文

谁能给我详细介绍一下C_link是什么?有什么功能?是什么原理

2013-10-07 来源:年旅网

有网友碰到这样的问题“谁能给我详细介绍一下C_link是什么?有什么功能?是什么原理”。小编为您整理了以下解决方案,希望对您有帮助:

解决方案1:

详解link
  有些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后,或许会有一些答案。
  首先看看我们是如何写一个程序的。如果你在使用某种IDE(Visual Studio,Elicpse,Dev C++等),你可能不会发现程序是如何组织起来的(很多人因此而反对初学者使用IDE)。因为使用IDE,你所做的事情,就是在一个项目里新建一系列的.cpp和.h文件,编写好之后在菜单里点击“编译”,就万事大吉了。但其实以前,程序员写程序不是这样的。他们首先要打开一个编辑器,像编写文本文件一样的写好代码,然后在命令行下敲
  cc 1.cpp -o 1.o
  cc 2.cpp -o 2.o
  cc 3.cpp -o 3.o
  这里cc代表某个C/C++编译器,后面紧跟着要编译的cpp文件,并且以-o指定要输出的文件(请原谅我没有使用任何一个流行编译器作为例子)。这样当前目录下就会出现:
  1.o 2.o 3.o
  最后,程序员还要键入
  link 1.o 2.o 3.o -o a.out
  来生成最终的可执行文件a.out。现在的IDE,其实也同样遵照着这个步骤,只不过把一切都自动化了。
  让我们来分析上面的过程,看看能发现什么。
  首先,对源代码进行编译,是对各个cpp文件单独进行的。对于每一次编译,如果排除在cpp文件里include别的cpp文件的情况(这是C++代码编写中极其错误的写法),那么编译器仅仅知道当前要编译的那一个cpp文件,对其他的cpp文件的存在完全不知情。
  其次,每个cpp文件编译后,产生的.o文件,要被一个链接器(link)所读入,才能最终生成可执行文件。

显示全文