【发布时间】:2015-04-03 00:19:08
【问题描述】:
我在编译 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写的程序,但是有没有像gcc这样的Java编译器?抱歉我的愚蠢问题,我是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 *~
【问题讨论】:
-
您的实际问题是什么?如何拨打
make? -
是的,我想运行 makefile(编译),但我不知道该怎么做。
标签: java compilation makefile