一直很好奇为什么运行C语言需要“编译器”编译才能运行,而Python却需要“解释器”
事实上这两者主要的区别在于:你的代码是由谁执行
例如C语言:C语言的运行是将你的C语言代码通过编译器翻译为一个由机器语言写的可执行代码
而Python则是由解释器逐行读取代码,将Python编译为字节码,然后由大型C程序解释。
其中编译器生成了一个中间产物:可执行文件obj之类的,Python没有
说一说编译的过程:
预处理:1.就是宏替换,把宏定义的值带进去
2.去注释
3.把库函数的头文件引入
编译: 把代码转为汇编代码文件,这个时候可以排查错误,可能会报错
汇编 : 再把这个汇编代码转为二进制指令文件
链接 : 把已经找到的函数和声明的库函数头文件链接,找到它的地址。
1 .静态连接是直接把库搬进可执行文件里
2.动态链接就是把你用到的函数记下来到一个叫动态库到库里,每次执行的时候去这个库里找