既然程序最终都被变成了一条条机器码去执行,那为什么同一个程序,在同一台计算机上,在Linux下可以运行,而在Windows下却不行呢?

反过来,Windows上的程序在Linux上也是一样不能执行的

可是我们的CPU并没有换掉,它应该可以识别同样的指令呀!!!

如果你和我有同样的疑问,那这一节,我们就一起来解开。

1 编译、链接和装载:拆解程序执行

写好的C语言代码,可以通过编译器编译成汇编代码,然后汇编代码再通过汇编器变成CPU可以理解的机器码,于是CPU就可以执行这些机器码了

你现在对这个过程应该不陌生了,但是这个描述把过程大大简化了

下面,我们一起具体来看,C语言程序是如何变成一个可执行程序的。

过去几节,我们通过gcc生成的文件和objdump获取到的汇编指令都有些小小的问题

我们先把前面的add函数示例,拆分成两个文件

  • add_lib.c
  • l
收藏 打印