设为首页 收藏本站
查看: 1236|回复: 0

[经验分享] KVM的编译

[复制链接]

尚未签到

发表于 2015-10-10 10:46:05 | 显示全部楼层 |阅读模式
编译过程:
PC-Linux平台为例,编译用的主Makefilebuild/linux目录下,在默认的情况下,只要系统中安装有gcc,输入make命令就可以完成编译,并在kvm/VmUnix/build目录下生成可执行文件kvmKvm本身就是完整的可执行文件,不需要依赖于其它的库和文件。
查看build/linux目录下的Makefile文件,可看到make会分别再到其它4个目录中再去编译,下面分别看每一次编译所做的工作:
1tools/preverifier/build/linux/Makefiletools/preverifier/build/linux目录中有一些源文件,它们是与虚拟机相独立的,这个Makefile的作用就是把这些源文件编译成可执行文件preverifier,即“预验证器”。预验证器只能在PC平台上工作,它的作用是完成class文件字节码的验证。
字节码的验证本来是Java虚拟机在载入类时所进行的一次安全检查,为什么在这里,在虚拟机之外,也要进行一个验证呢?这与KVM使用系统类库的方式有关:
通常,虚拟机只是一个Java程序的运行框架,要使用某个类时,就从文件系统或者网络等媒体载入,所以,配合虚拟机使用的常常要有一个类库,用于存放系统自带的class文件。比如在JDKlib目录下存放了一些jar文件,它们就会在需要的时候被装载。
kvm是针对嵌入式设备所设计的小型虚拟机,如果再配套一个外接的类库就会很不方便,希望类库也能集成在可执行文件中。但Java是一种动态装载的语言,要把类库放到可执行文件中,就要首先反类库“静态化”。在静态化的过程中,首先就要载入类,并保证字节码的安全性,所以也要有验证,这里生成的preverifier就是用来验证类文件的。与虚拟中的验证器不同的是,preverifier的输入是类文件,输出也是类文件,只不过输出的类文件已经是被验证过的了,使用时不需要再进行验证,preverifier相当于class文件在使用之前就进行了一次验证,所以这个验证器被称为“预验证器”。
2api/Makefileapi目录下存放有cldc1.1的所有Java源文件,这个Makefile的作用首先是把Java源文件编译成.class文件,当然这要调用本机的javac,要确保PC上安装有JDK;编译完成后,调用上面生成的preverifier进行预验证,经过预验证的class已经是安全的;接下来把class文件打包成classes.zip
3tools/jcc/Makefile这就是把类库“静态化”的地方,在其中会调用java命令把classes.zip里的class文件转化成C源文件。
4kvm/vmunix/src/Makefile这是最后的一步,所把有虚拟机的源文件和第3步所生成的类库的源文件编译并连接成可执行文件kvm

交叉编译要注意的问题:
如果是要在嵌入式设备上使用kvm,就会需要使用arm-linux-gcc来编译。由以上的编译过程可知,前三个步骤都是只能在PC上完成的,只有最后一个步骤是面向目标平台的。所以只要修改kvm/vmunix/src/Makefile中的CCarm-linux-gcc就可以编出可以在嵌入式设备上运行的kvm啦。
              版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-125010-1-1.html 上篇帖子: centos 安装kvm 下篇帖子: KVM的常量池
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表