编译CDC

来源:互联网 发布:官方淘宝波司登羽绒服 编辑:程序博客网 时间:2024/05/22 05:23
开始编译CDC之前,有两点很重要:
1.理解编译的流程,即makefile大致是做了什么事情;
2.正确安装和配置makefile中要用到的工具;

(一)编译的基本流程如下:

在CDC的源代码中,文件分为三种:C,jaja和汇编,每种文件的编译过程如下:

C文件(.C):gcc编译为.o文件;
Java文件(.java):用javac编译为.class文件-》用zip或jar大部为.zip或.jar文件-》由JCC将导出为romjava.c文件-》gcc编译为romjava.o文件-》ar成.a文件;
汇编文件(.s):as编译为.o文件;
最后,将.o和.a以及系统库文件连接为JRE(CVM)文件。

具体步骤如下:
1.将preload包中的java源文件用javac编译为btclasses/*.class文件;
2.将在生成的tranlist中的类通过zip工具归档为btclasses.zip文件;
3.将非preload包中的java源文件通过javac编译为.class文件放在相应的class-lib目录下;
4.用jar工具将class-lib下的class文件打包为相应的class-lib.jar文件;
5.使用JCC(也是编译时生成的)将btclassed.zip中的数据结构提取出放到romjava.c和romjava.h中;
6.使用javah工具将非preload包中各类中的native方法本地化为相应的.h文件;
7.使用gcc将native方法所在的.c文件和JVM本身的.c文件编译为相应的.o文件;
8.将romjava.c文件编译为romjava.o文件;
9.使用ar将romjava.o文件归档为romjava.a文件;
10.将.o和.a文件连接生成cvm文件放在bin目录下;

(二)正确配置工具:
    在makefile中大致使用到了如下的工具,首先在终端下使用which命令看一下各工具是否安装,及当前所在的路径。如查看gcc使用:which gcc,然后自己定义如下变量放在makefile中(我这里只是生成在主机环境下的cvm,要想交叉编译出目标平台的cvm,待续):

# begin for var defined by myself

CC                        = gcc
CCC                       = $(CC)
AS                        = $(CC)
LD                        = $(CC)
CVM_USE_NATIVE_TOOLS      = true

CVM_JAVAC                 = javac
CVM_JAVA                  = java
CVM_JAVADOC               = javadoc
CVM_JAVAH                 = javah
CVM_JAR                   = jar
AR                        = ar
RANLIB                    = ranlib
HOST_CC                   = $(CC)
HOST_CCC                  = $(HOST_CC)
LEX                       = lex
BISON                     = bison
ZIP                       = zip
SHELL                     = sh

# end for var defined by myself

cd到在自己的设备文件,输入make,一切正确,生成cvm文件。OK!
原创粉丝点击