1.GCC
1.预处理(.c➡.i)对各种预处理命令进行处理,包括头文件包含、宏定义的扩展、条件编译的选择等。
2.编译(.i➡.s)生成汇编文件。
3.汇编(.s➡.o)汇编翻译为机器码。
4.链接(.o➡.out)链接各种库(静态连接和动态链接),得到可执行文件。
2.应用程序的地址
从低地址(虚拟地址0x48000)到高地址分别为代码段、数据段、堆、栈。
1.代码段:代码、全局常量和字符串常量。
2.数据段:全局变量和静态变量。
3.堆:动态分配的变量。
4.栈:局部变量(不包括加了static的局部变量)。
3.文件操作
分为两种:基于Linux的系统调用函数和基于C库的函数。
1.系统调用函数:open、creat、close、write、read、lseek等等
2.C库函数:fopen、fclose、fread、fwrite、fseek等等