编译下面的程序

main.c

int sum(int *, int);
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;
}

在 Linux 下,可以使用 GCC 来编译该程序:

gcc main.c sum.
./a.out

Untitled

上述过程可以分为 4 个步骤:

Untitled

预处理

源码文件(.c/.cpp)和头文件(.h/.hpp)被预编译器 cpp 预编译成一个 .i 文件。

gcc -E mian.c -o main.i
gcc -E sum.c -o sum.i
或者
cpp main.c -o main.i
cpp sum.c -o sum.i

编译

将预处理完的文件进行一些列词法分析、语法分析、语义分析以及优化后生成相应的汇编代码文件。

gcc -S main.i -o main.s
gcc -S sum.i -o sum.s