为了使用 GCC,我在 windows 7 上安装了 CYGWIN Emulator Terminal,我知道它可以编译太多语言,我可以将它与 C 一起正确使用,但不知道如何使用它来编译 java 文件?
5 回答
如果有人在2016 年 9 月 30 日之后阅读此问题:
GNU Compiler for Java ( GCJ ) 已停产,不再是 GNU Compiler Collection (GCC) 的一部分,如GCC 7 的发行说明中所示。
你读过说明书吗? GNU Java
他们有一个名为 gcj 的编译器,专门用于 Java 语言。
GCC Java 编译器
曾几何时,有一个 GCC Java 前端,但它已被弃用。
值得注意的是,该软件包不再存在于 Ubuntu 18.04 中,但它存在于 Ubuntu 16.04中。
为什么它被弃用:Java JRE vs GCJ
只是为了好玩,我们可以在旧的 Docker 容器中试用这个历史软件。但是 TODO:我今天无法让它在 Ubuntu 16.04 或 14.04 客户机上运行,而且我懒得调试它。但我发誓,当我第一次回答这个问题时,我至少完成了一次。
主.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 5 开始,Android 一直在使用“ART 运行时”,它会提前在应用程序中编译 Java:https ://en.wikipedia.org/wiki/Android_Runtime
因此,如果您要在 2019 年的今天研究 Java 到二进制编译,那么您应该看看。
就像 Android 中的所有其他东西一样,不幸的是,在没有 Android 的其余部分的情况下运行 ART 可能是不可能的或疯狂的。
这里我简单解压了一些预编译的 Android 应用程序:Java 中的 native 关键字是干什么用的?表明它们实际上被编译为共享对象。
除了接受的答案之外,我建议不要根据以下帖子使用 GCC 编译 Java:Java JRE vs GCJ。Javac 是一个更好的选择!但是,如果您使用 GCC 将 Java 编译为本机代码(也许),它可能仍然值得一看。在我看来,GCJ 已经死了(最后一次新闻更新是在 2009 年!https://gcc.gnu.org/java/index.html)