【问题标题】:How do / Can I compile Clojure with GCJ如何/我可以用 GCJ 编译 Clojure
【发布时间】:2015-07-20 23:10:26
【问题描述】:

因为 Clojure 构建在 JVM 之上,我想我可以使用 GCJ 将其直接编译为机器代码,但我找不到任何有关它的信息。

如果可能的话,我怎么能把它“剥离”到它的基本要素,所以启动时间和内存占用尽可能小。

我真的很想用 Clojure 编写遵循 UNIX 原则的小型终端程序

【问题讨论】:

  • 你没有,你也不能。 但是,您可以使用可以编译为本机代码的不同 LISP 实现。
  • 以防万一:SBCL 编译为本机代码(通常非常快),我相信 ECL 编译为 C。
  • This discussion 是相关的。

标签: java performance clojure leiningen gcj


【解决方案1】:

理论上,您可以将 Clojure 源代码 AOT 编译为 Java 字节码,然后使用gcj 将此字节码编译为本机机器码。在实践中,我不希望这会起作用。 gcjsevere limitations 阻止它用于大多数现代 Java 应用程序。具体来说,它对语言特性的支持在 Java 1.2 中停止(Clojure 需要 Java 1.6),并且它对 Clojure 运行时所需的标准类库的实现不完整。在野外,我看到 Clojure 应用程序在使用 gcj 运行时而不是 OpenJDK 或 Oracle JRE 意外启动时崩溃和烧毁。

【讨论】:

    【解决方案2】:

    clojure 编译器接收源“表达式”,通常来自文件,并生成 JVM 字节码。然后这个字节码被 JVM 编译为 JIT 风格的机器码。 clojure 编译器和 GCJ 都是编译器,尽管是针对不同的语言,所以讨论一个接一个地链接是没有意义的。 clojure 编译器不生成 java 源代码,它直接生成字节码。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 2011-03-08
    • 2013-01-03
    • 1970-01-01
    相关资源
    最近更新 更多