c语言中的编译和链接,编译就是把源代码生成二进制代码,但是链接是干什么的,请高手指教。

语言中的编译和链接,编译就是把源代码生成二进制代码,但是链接是干什么的,请高手指教。

一个程序 由很多单元组成 编译只是 把每个单元变成二进制 链接是把这些单元组成一个完成的程序

链接就是把程序装配起来,一个可执行文件不仅仅是机器代码,而是一个完整的文件,这个文件包含一些描述性的信息和数据,比如它调用哪些系统库,它的入口地址是什么,它如何分配静态存储区、它需要多少内存运行,它包含的额外的数据等等。
不同的操作系统,可执行文件需要的额外的信息不同,比如linux、windows、dos等等有各自的格式。编译器只是产生机器代码,而链接器才能把机器代码按照操作系统约定的格式装配起来。