-
编译系统 编辑
编译系统又称为第二类编程环境。开发者根据语言的规定编写源程序,然后进行编译、连接,生成可执行文件,例如DOS操作系统加各类高级语言(如FORTRAN、PASCLL、C语言等)就属于这种类型接口平台。用于提供编译任务输入接口以及处理状态信息输出接口,并根据输入的编译任务生成任务名;编译服务器,用于解析所述任务名,获得相应的源代码,并进行编译,同时产生所述编译任务的处理状态信息提供给所述接口平台。
目录
本系统由注册服务器、编译服务器和客户端组成。网内启动一个注册服务器,多个编译服务器。在MTK6223平台上,单机new一次需要50分钟的项目,使用10个编译服务器同时编译,new一次需要13分钟。模块编译之前是在客户端工作的,需要9分钟,其中为了实现分布式编译,压缩源代码占用了2分钟,文件下载到编译服务器需要2分钟。
从第一个模块编译到最后link之前,10台机器仅用4分钟就完成了1200个c文件的编译工作。最后的link是在本机进行的,几十秒就完了。
我曾经试过18台机器同时编译,1200个c文件不到2分钟就编译完成了,当然下载时间需要3分钟。对于开发人员来讲,new一次不再是梦魇。
当然,不能无限制地增加编译服务器,要考虑文件传输所消耗的时间。MTK平台文件很多,需要由客户端向服务器分发。一般地,一个客户端与十个服务器联合编译可以达到理想效果。
预编译系统还支持交互式接口DM2-ISQL、应用开发工具集DM2-FORM、DM2-GRAPH、DM2-REPORT等工作环境。
流程图片
(1) 跨越多个操作系统平台,包括当前应用最广泛的windows,unix(包括Mac OS X).
(2) 采用BSD风格的协议开放源代码。据我个人阅读协议文件,没发现协议与两句BSD协议有什么不同。
(3) 它可以支持具有非常复杂的路径、库依赖的程序的编译。比如它支持编译个程序:它依赖于很多的库以及其它一些代码文件,而每一个库又有很多子目录。
(4) 像很多Make一样,它会对曾经编译的文件做一些cache一遍加速以後的编译。
使用这个编译系统的时候,需要每个目录/子目录创建一个名为CMakeLists.txt的文件。
这个项目历史也算是比较悠久了,从2000年就开始了。
当前使用这个编译系统的项目:llvm/clang。
我就是从clang的源代码里发现的,邮件列表里有人推荐使用cmake,不要使用msvc的.sln文件
但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。
计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
反编译是一个复杂的过程,所以越是高级语言,就越难于反编译,但还是有许许多多的反编译软件:
VB: VBExplorer ;只能反编译界面图像,好像代码不能完全反编译
JAVA: JAD ;java的反编译比较常见,所以反编译比较完全 C++ : eXeScope
UNIX环境下的C编译系统所遵循的也是这么一个一般的过程。值得注意的是这个过程并不是由某个程序独立完成的,而是由多个分别完成某一方面工作的程序组合完成的。这一设计思想同我们最初提到的UNIX系统软件功能专一的特点是相符的。
归纳起来,可以将UNIX环境下C编译系统的工作过程总结如下:
C源程序头文件--→预编译处理(cpp)编译程序本身--→优化程序--→汇编程序--→链接程序--→可执行文件
一般我们用cc命令来完成对源程序的编译工作。此cc命令并不是一个二进制的可执行程序,而是一个shell命令文件。它的工作就是依次调用我们上面所列出的各个完成某部分工作的具体程序,将指定的c源程序转换成可执行的代码。
在UNIX系统中,实现C源程序到可执行文件的这一转换过程的工具是cc。在大多数系统中cc实际上是一个shell命令文件。有些系统中的C编译程序可能并不叫cc而是其它的一个什么名称,如Sun工作站上常用的gcc等等。但这些都无关紧要。大多数系统中C编译命令的用法基本上都是类似的。我们这里介绍的将以SVR4上的C编译系统为基础。
其中我们也要知道编译系统也是一个系统软件,而不是应用软件。
1、本站所有文本、信息、视频文件等,仅代表本站观点或作者本人观点,请网友谨慎参考使用。
2、本站信息均为作者提供和网友推荐收集整理而来,仅供学习和研究使用。
3、对任何由于使用本站内容而引起的诉讼、纠纷,本站不承担任何责任。
4、如有侵犯你版权的,请来信(邮箱:baike52199@gmail.com)指出,核实后,本站将立即删除。