可执行程序的装载和启动---linux内核学习笔记(七)

内容一:实验报告相关说明

真实姓名 谢润帮

原创作品转载请注明出处 

所学课程:《Linux内核分析》MOOC课程  

链接:http://mooc.study.163.com/course/USTC-1000029000

 

内容二:可执行文件的创建(自己本身对这块不熟,是通过查资料来学习的,篇幅有点多)

  2.1 预处理阶段

  预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行相应的转换,预处理过程还会删除程序中的注释和多余的空白字符。

其中预处理指令主要包括以下四个方面:

     2.1.1 宏定义指令

       预处理过程会把源代码中出现的宏标识符替换成宏定义时的值,常用的两种宏定义: 

1 //声明一个标识符,全部用大写字母来定义宏
2 #define MAX_NUM 10
3 
4 //带参数的#define指令(宏函数)
5 #define Cube(x)  ((x)*(x))
6 int i,num=1;
7 i=Cube(num);

    2.1.2 条件编译指令

      定义不同的宏来决定编译程序对哪些代码进行处理,条件编译指令将决定哪些代码被编译,而哪些是不被编译的。

    2.1.3 头文件包含指令

      #include预处理指令的作用是在指令处展开被包含的文件。

    程序中包含头文件有两种格式:#include <my.h>

                  #include "my.h"

    2.1.4 特殊符号

      预编译程序可以识别一些特殊的符号。预编译程序对于在源程序中出现的这些串将用合适的值进行替换,__FILE__,__LINE__,__TIME__ 等。

    以下代码分别打印所在文件名和当前时间。

1 int main(int argc, char *argv[]) 
2 {
3     printf("%s\n",__FILE__);
4     printf("%s\n",__TIME__);
5     return 0;
6 }

      

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。