编程机制_讨论帖

Lyric群青
C++领域新星创作者
2023-08-28 16:21:04

以Linux下C语言的编译过程为例:
编译过程只需:
$ gcc hello.c # 编译
$ ./a.out # 执行
hello world!
上述gcc命令其实依次执行了四步操作:1.预处理(Preprocessing), 2.编译(Compilation), 3.汇编(Assemble), 4.链接(Linking)。

img


要学会类比OS中的理论知识:在完成链接后,即会生成装入模块(即为所谓的可执行文件exe)

头文件需要用.h注明,而具体的实现过程在.c文件中进行
(与常规的数据结构实现方式一致)

// mymath.h
#ifndef MYMATH_H
#define MYMATH_H
int add(int a, int b);
int sum(int a, int b);
#endif

```c++

1.预处理(Preprocessing)
预处理用于将所有的#include头文件以及宏定义替换成其真正的内容,预处理之后得到的仍然是文本文件,但文件体积会大很多。

2.编译(Compilation)
这里的编译不是指程序从源文件到二进制程序的全部过程,而是指将经过预处理之后的程序转换成特定汇编代码(assembly code)的过程。

3.汇编(Assemble)
汇编过程将上一步的汇编代码转换成机器码(machine code),这一步产生的文件叫做目标文件
(即源文件)
操作系统中称之为目标模块

4.链接(Linking)
链接过程将多个目标文以及所需的库文件(.so等)链接成最终的可执行文件(executable file)。
即所谓的装入模块
...全文
46 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

116

社区成员

发帖
与我相关
我的任务
社区管理员
  • community_1031
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧