《深入理解计算机系统》读书笔记——第七章 链接
2016-10-13 22:02
225 查看
链接
有两个c文件:
要通过GNU编译系统构造程序,我们可以在shell中输入以下命令:
gcc -O2 -g -o p main.c swap.c
(1)驱动程序首先运行C预处理器(cpp),将C源程序翻译成一个ASCII码的中间文件main.i。
(2)接下来,驱动程序运行C编译器(ccl),它将main.i翻译成一个ASCII汇编语言文件 .s。
(3)然后,驱动程序运行汇编器,它将main.s翻译成一个可重定位目标文件main.o。
(4)驱动程序经过相同的过程生成swap.o。最后,它运行链接器ld,将main.o和swap.o以及一系列的系统目标文件组合起来,创建一个可执行目标文件p。(-o为命名参数)
在命令行中输入./p时,shell调用操作系统中也各叫做加载器的函数,拷贝可执行文件p中的代码和数据到存储器,然后将控制转移到这个程序的开头。
有两个c文件:
/* 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; *bufp0 = *bufp1; *bufp1 = temp; }
要通过GNU编译系统构造程序,我们可以在shell中输入以下命令:
gcc -O2 -g -o p main.c swap.c
(1)驱动程序首先运行C预处理器(cpp),将C源程序翻译成一个ASCII码的中间文件main.i。
(2)接下来,驱动程序运行C编译器(ccl),它将main.i翻译成一个ASCII汇编语言文件 .s。
(3)然后,驱动程序运行汇编器,它将main.s翻译成一个可重定位目标文件main.o。
(4)驱动程序经过相同的过程生成swap.o。最后,它运行链接器ld,将main.o和swap.o以及一系列的系统目标文件组合起来,创建一个可执行目标文件p。(-o为命名参数)
在命令行中输入./p时,shell调用操作系统中也各叫做加载器的函数,拷贝可执行文件p中的代码和数据到存储器,然后将控制转移到这个程序的开头。
相关文章推荐
- 《深入理解计算机系统》 第六周读书笔记 第七章 链接
- 《深入理解计算机系统》读书笔记 第七章 链接
- 《深入理解计算机系统》读书笔记第七章——链接
- 《深入理解计算机系统》第七章链接 读书笔记
- 《深入理解计算机系统》读书笔记 第七章 链接
- 《深入理解计算机系统》读书笔记:第七章 链接
- 《深入理解计算机系统》第七章 链接 读书笔记
- 程序员的自我修养第七章读书笔记-动态链接2
- 第七章读书笔记《深入理解计算机系统》
- 《深入理解计算机系统》第七章 链接
- 第七章读书笔记——链接
- 《深入理解计算机系统》 第七章 链接
- 《深入理解计算机系统》 第七章 链接
- 《深入理解计算机系统》第七章读书笔记
- 2013337朱荟潼 Linux&深入理解计算机系统第七章读书笔记——链接
- Java编程思想 第七章读书笔记
- 读书笔记 第七章-进程环境
- 《TCP/IP详解 卷1:协议》 读书笔记 第七章 Ping程序
- 《深入理解计算机系统》读书笔记
- 读书笔记《深入理解计算机系统》(第三版) 概述