我在编译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 *~
答案 0 :(得分:1)
为了运行Makefile(在Linux / UNIX上),首先需要安装“make”以及它使用的任何其他工具。在这种情况下,工具只是java
,javac
和jar
命令。对于最后两个,您需要安装JDK。
但我不知道,我怎么能运行makefile?
将目录更改为包含Makefile的目录,然后使用适当的目标运行'make'。在这种情况下make all
。
SDK和JDK之间有什么区别吗?
没有Java SDK这样的东西。
...但是有一些像Java一样的Java编译器吗?
Java编译器是javac
。这就是你的makefile正在使用的。
对不起我的愚蠢问题,我是makefile的新手,我认为解决方案非常简单。
REAL解决方案是查找和阅读有关Makefile的教程以及如何阅读,编写和使用它们。 (一般来说,问新手问题的方法是教育自己,这样你就不会成为新手!)