69,373
社区成员
发帖
与我相关
我的任务
分享
/*****************main.c*/
void swap();
int buf[2]={1,2};
int main(){
swap();
return 0;
}
/**************swap.c/
extern int buf[];
int *bufp0=&buf[0];
int *bufp1;
void swap(){
int temp;
bufp1=&buf[1];
temp=*bufp0;
*bufp1=*bufp0;
*bufp0=temp;
}
////////////
gcc -E main.c -o main.i
gcc -E swap.c -o swap.i
编译,生成的是一个经过编译的汇编程序源代码:
gcc -S main.i -o main.s
gcc -S swap.i -o swap.s
汇编,这一步生成的是目标文件,已经非常接近于我们需要的可执行文件了:
gcc -c main.s -o main.o
gcc -c swap.s -o swap.o
链接,链接就是链接目标文件模块,将对目标文件中因为跨模块而未能解析的符号引用(symbol)在这一步进行最后处理,得到的test就是可执行程序了:
gcc main.o swap.o -o test