编译NanoVM Java虚拟机

时间:2015-04-03 00:19:08

标签: java compilation makefile

我在编译NanoVM项目时遇到问题:

http://www.harbaum.org/till/nanovm/index.shtml

NanoVM是AVR微控制器的Java实现。我知道这不高效。我有" makefile"文件。此makefile包含从源.java文件编译Java .class的说明。但我不知道,我怎么能运行makefile?我以前用javac.exe编译器编写java标准应用程序。在安装说明写道,我必须有Java SDK(J2SE)。 SDK和JDK之间有什么区别吗?我安装了JDK,我之前已经读过SDK和JDK之间没有任何区别,但我不确定。我知道makefile文件用于管理编译,我之前使用makefile编译用C编写的程序,但是有一些Java编译器如gcc吗?对不起我的愚蠢问题,我是makefile的新手,我认为解决方案非常简单。 我的makefile:

#
# Makefile for NanoVMTool
#

APP = NanoVMTool
VERSION = 1.5

all: ../$(APP).jar

CLASSPATH = ../../java/examples
NATIVEPATH = ../../java/native

JAVAFILES = AccessFlags.java CodeInfo.java ConstPoolEntry.java FieldInfo.java \
            MethodInfo.java AttributeInfo.java CodeTranslator.java \
        ConstPoolEntryError.java InnerClassInfo.java NanoVMTool.java \
        ClassFileReader.java CommonInfo.java ConvertException.java \
        LineNumberInfo.java NativeMapper.java ClassInfo.java \
        Config.java Debug.java LocalVariableInfo.java UVMWriter.java \
        ClassLoader.java ConstPool.java ExceptionInfo.java \
        MethodIdTable.java Uploader.java NVMComm2.java

# compile target code
$(CLASSPATH)/%.class: $(CLASSPATH)/%.java
    javac -classpath $(CLASSPATH):$(NATIVEPATH) $<

%.class: %.java
    echo "public class Version {" > Version.java
    echo "  public static String version = \"V$(VERSION)\";" >> Version.java
    echo "}" >> Version.java
    javac $<

../$(APP).jar: $(APP).class
    jar cmf $(APP).mf ../$(APP).jar *.class

# convert and upload a class file (should be moved to vm/target Makefile)
asuro-%: $(CLASSPATH)/%.class $(APP).class
    java $(APP) ../config/Asuro.config $(CLASSPATH) $*

mega8-%: $(CLASSPATH)/%.class $(APP).class
    java  $(APP) ../config/Mega8.config $(CLASSPATH) $*

clean:
    rm -f *.class *~

1 个答案:

答案 0 :(得分:1)

为了运行Makefile(在Linux / UNIX上),首先需要安装“make”以及它使用的任何其他工具。在这种情况下,工具只是javajavacjar命令。对于最后两个,您需要安装JDK。

  

但我不知道,我怎么能运行makefile?

将目录更改为包含Makefile的目录,然后使用适当的目标运行'make'。在这种情况下make all

  

SDK和JDK之间有什么区别吗?

没有Java SDK这样的东西。

  

...但是有一些像Java一样的Java编译器吗?

Java编译器是javac。这就是你的makefile正在使用的。


  

对不起我的愚蠢问题,我是makefile的新手,我认为解决方案非常简单。

REAL解决方案是查找和阅读有关Makefile的教程以及如何阅读,编写和使用它们。 (一般来说,问新手问题的方法是教育自己,这样你就不会成为新手!)

相关问题