c编译过程和其他解释性语言

编译原理(0302)

C语言编译过程:

sourcecode(src)->预编译阶段->编译器->可执行程序(a.out,a.exe)

编译:对于每个c源程序文件,包括*.c,*.h,都将生成一个.o文件,没有main函数的文件也可以编译成.o文件,编译器将每个源文件都编译成.o文件,是为了提高工程的效率,在实际工程项目中,会用到多个文件,如果全部整合到同一个目标文件,其中某些源文件的错误将成为整个所有文件的编译错误,而一次同时编译整合所有的源文件的时间开销必定大于编译单个源文件的时间开销,所以编译器就分别将每个源文件都编译成.o文件。意义:敏捷开发,持续集成

链接:程序中用到的各种库,有静态库和动态库,静态链接,动态链接

制造库文件的工具在windows下为lib.exe,在linux下有ar,静态库与汇编生成的目标文件链接为可执行文件,所以静态库跟.o文件格式相似。一个静态库可以简单看成是一组目标文件(.o/.obj文件)的集合,即很多目标文件经过压缩打包后形成的一个文件。静态库特点总结:

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,避免了空间浪费。增量更新:程序的更新、部署和发布,动态链接的方式只需要更新动态库即可。

可执行文件的格式:windows下的pe格式,Linux下的elf格式

static,全局变量,栈,堆,指针

java语言编译、解释执行过程

src->Java编译器->byte code字节码->解释执行:JVM执行(虚拟机:模拟内存,执行指令)

纯解释性的语言:TCL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值