【问题标题】:Compiling NanoVM Java Virtual Machine编译 NanoVM Java 虚拟机
【发布时间】: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


【解决方案1】:

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

但我不知道,我该如何运行 makefile?

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

SDK和JDK有区别吗?

没有 Java SDK 这样的东西。

...但是有像 gcc 这样的 Java 编译器吗?

Java 编译器是javac。这就是您的 makefile 正在使用的内容。


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

真正的解决方案是查找并阅读有关 Makefile 以及如何阅读、编写和使用它们的教程。 (一般来说,向新手提问的解决方案是教育自己,让自己不再是新手!)

【讨论】:

  • 我做到了!感谢帮助。我有一个问题。我必须使用命令提示符 cmd.exe 并在包含 Makefile 的位置输入“make”命令。但我早些时候在 Windows 7 上尝试了“make”命令,但失败了。如何在系统上安装make?
  • 我不建议您尝试在 Windows 上构建 NanoVMTool。问题不仅仅是安装它。您还遇到了 Makefile 倾向于依赖于操作系统的问题。您可能还需要修改 Makefile。
  • 是的,我知道,项目的作者在说明中写道,它是在 linux 上构建的,如果我想在 Windows 上构建它,必须修改 Makefile,我刚刚运行了“make”,但出现了错误.
  • 顺便说一句,安装软件是一个题外话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多