如何在Java中使用GCC?

时间:2012-11-10 10:34:24

标签: java gcc cygwin

我已经在Windows 7上安装了CYGWIN仿真终端以便使用GCC,我知道它可以编译太多语言,我可以正确地使用它但不知道如何用它来编译java文件?< / p>

5 个答案:

答案 0 :(得分:7)

您是否阅读过本手册? gnu java

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

答案 1 :(得分:4)

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

用于Java的GNU编译器( GCJ )已已停产,并且不再属于GNU编译器集合(GCC)的一部分,如{ {3}}。

答案 2 :(得分:2)

GCC is a front-end编译几种语言(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年。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

GCC Java编译器

曾几何时,存在GCC Java前端,但它已被弃用。

值得注意的是,该软件包是not present anymore in Ubuntu 18.04, but it was in 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