链接器是如何工作

1 编译程序

对于如下简单的C程序:

// main.c

int sum(int *a, int n);

int array[2] = {1, 2};

int main()

{

int val = sum(array, 2);

return val

}

// sum.c

int sum(int *a, int n)

{

int i, s = 0;

for (i =0; i < n; i++){

s += a[i]

}

return s;

}

使用gcc来编译成可执行程序:

gcc -Og -o prog main.c sum.c

那么完整的中间流程如下:

......