我已经在Windows 7上安装了CYGWIN模拟器终端,以便使用GCC,我知道它可以编译很多语言,我可以正确地使用C,但不知道如何使用它来编译Java文件?
如果有任何人在2016年9月30日之后看到这个问题:
Java GNU编译器(GCJ)已经停止开发,不再是GNU编译器集合(GCC)的一部分。详情请参阅GCC 7 版本发布说明。
GCC Java编译器
曾经存在过一个GCC Java前端,但已被弃用。
值得注意的是,在Ubuntu 18.04中,该软件包不再存在,但在Ubuntu 16.04中存在。
为什么它被弃用:Java JRE vs GCJ
然而,我们可以在旧的Docker容器中尝试运行这个历史悠久的软件,只是TODO:我今天无法在Ubuntu 16.04或14.04上使其工作,并且我懒得调试。但我发誓,当我第一次回答这个问题时,我至少成功过一次。
Main.java
public class Main {
public static void main(String args[]) {
System.out.println("hello world");
}
}
编译并运行:
sudo apt-get install gcj-4.8 libgcj16-dev
gcj-4.8 -c Main.java
gcj --main=Main -o Main Main.o
./Main
gcj-4.8: error: libgcj.spec: No such file or directory
相关: https://bugs.launchpad.net/ubuntu/+source/gcj-4.0/+bug/24906
Android ART
从 Android 5 开始,Android 使用了“ART runtime”,预先编译应用程序中的 Java 代码:https://en.wikipedia.org/wiki/Android_Runtime
因此,如果您想要了解今天2019年的Java到二进制编译过程,那么您应该去了解这个。
像Android中的其他所有东西一样,如果没有其余的Android系统,运行ART可能会很难或不可行。
在这里,我简要介绍了一些预编译的Android应用程序:What is the native keyword in Java for?,显示它们实际上是编译为共享对象。
gcj
已经从GCC中删除了。 - kaartic