计算机系统基础技术日志——链接
一、链接是什么
在实际开发中,我们一定是多文件编程,所有文件在编译后,需要合在一起,合在一起的过程就是链接的过程。
链接可以执行于编译时,也就是在源代码被翻译成机器代码时;也可以执行于加载时(load time),也就是在程序被加载器加载到内存并执行时;甚至执行于运行时,也就是有应用程序来执行。
在早期的计算机系统中,链接是手动执行的。在现代系统中,链接是由叫做链接器的程序自动执行的。
二、链接
1.链接操作的步骤
(1)确定符号引用关系(符号解析)
(2)合并相关(.o)文件
(3)确定每个符号的新地址
(4)在指令中填入新地址
2.gcc编译过程
代码如下(示例):
/* main.c */
int sum(int *a, int n);
int array[2] = {
1, 2};
int