14

为了使用 GCC,我在 windows 7 上安装了 CYGWIN Emulator Terminal,我知道它可以编译太多语言,我可以将它与 C 一起正确使用,但不知道如何使用它来编译 java 文件?

4

5 回答 5

20

如果有人在2016 年 9 月 30 日之后阅读此问题:

GNU Compiler for Java ( GCJ ) 已停产,不再是 GNU Compiler Collection (GCC) 的一部分,如GCC 7 的发行说明中所示。

于 2018-08-02T11:19:10.637 回答
8

你读过说明书吗? GNU Java

他们有一个名为 gcj 的编译器,专门用于 Java 语言。

于 2012-11-10T10:38:54.140 回答
6

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 关键字是干什么用的?表明它们实际上被编译为共享对象。

于 2015-08-04T12:53:10.677 回答
2

GCC 是编译多种语言(GNU Pascal、Mercury、Cobol、GNU Modula-2、Modula-3、GHDL、PL/1、GCC Unified Parallel C...)的前端。

目前主要的 GCC 发行版包含 C (gcc)、C++ (g++)、Objective C、Fortran、Java (GCJ)、Ada (GNAT) 和 Go 的前端。

GCJ相当于 javac,但正如您所见,最新消息是 2009 年发布的。

于 2012-11-10T10:57:11.997 回答
2

除了接受的答案之外,我建议不要根据以下帖子使用 GCC 编译 Java:Java JRE vs GCJ。Javac 是一个更好的选择!但是,如果您使用 GCC 将 Java 编译为本机代码(也许),它可能仍然值得一看。在我看来,GCJ 已经死了(最后一次新闻更新是在 2009 年!https://gcc.gnu.org/java/index.html

于 2014-10-22T13:58:39.377 回答