编译后生成的二进制文件会发生什么

时间:2018-05-07 13:27:42

标签: c process operating-system microcontroller

我为我的微控制器创建了一个hex文件,并将其刻录在微控制器上。 当我创建一个控制台C程序并尝试在我的PC上运行它时,我的PC操作系统是否与编译后生成的二进制文件类似?在这种情况下,目标是我的PC的微处理器。

1 个答案:

答案 0 :(得分:3)

不,它不相似。当您编译针对μc的内容时,编译器通常会发出 在此控制器上运行的机器代码。

针对现代操作系统,编译器也会发出机器代码,但将其放入包含大量元信息的文件中,格式取决于目标操作系统(例如PE(=便携式)适用于Windows,ELF for Linux和其他* nix系统)。这些元信息包含

之类的内容
  • 程序中的确切入口点(而二进制文件只会在第一个字节开始执行)
  • 可能的重定位信息(如果从不同的地址执行,代码中必须更改的内容)
  • 在运行时链接库所需的符号表,因此可以将库函数的地址修补到可执行文件中
  • [...]

然后,您的操作系统将加载此可执行文件,并在任何执行开始之前进行解释。