【问题标题】:Cross-compilation in Racket/Scheme languageRacket/Scheme 语言中的交叉编译
【发布时间】:2018-02-25 21:32:45
【问题描述】:

在 Linux 中为 Racket 编程语言 (cross-compile) 工作时是否可以为 Windows 或 Mac OSX 编译? DrRacket IDE 不提供任何此类菜单项。 Raco help 命令也没有显示任何此类选项:

$ raco help make
raco make [ <option> ... ] <file> [<another-file>] ...
 where <option> is one of
  -j <n> : Compile with up to <n> tasks in parallel
  --disable-inline : Disable procedure inlining during compilation
  --disable-constant : Disable enforcement of module constants
  --no-deps : Compile immediate files without updating dependencies
  -p <file>, --prefix <file> : Add elaboration-time prefix file for --no-deps
  --no-prim : Do not assume `scheme' bindings at top level for --no-deps
  -v : Verbose mode
  --vv : Very verbose mode
  --help, -h : Show this help
  -- : Do not treat any remaining argument as a switch (at this level)
 Multiple single-letter switches can be combined after one `-'; for
  example: `-h-' is the same as `-h --'

我怀疑这在 Racket 中是不可能的。是否可以使用任何其他 Scheme 或 Lisp 语言?谢谢你的cmets。

【问题讨论】:

  • 在撰写本文时(尽管它可能会随着移植到 Chez Scheme 的原因而改变),Racket 字节码是独立于平台的,因此“交叉编译”并不是很有意义。相同的字节码应该适用于任何平台。
  • 我的意思是编译成本地机器码。
  • Racket JIT 将字节码编译为本机机器码。

标签: compilation scheme racket


【解决方案1】:

尽管raco 和 DrRacket GUI 给人的印象是您可以制作一个原生可执行文件,但它只是作为一个捆绑了已编译字节码的 VM 工作的球拍可执行文件。因此,您实际上永远不会运行您在球拍中编写的本机代码。

【讨论】:

    【解决方案2】:

    目前看来这是可能的,但还不是很简单或可靠。根据 Matthew Flatt 的 this mailing list message,日期为 2016-01-07:

    我们已经取得了一些进展,尽管还没有我们想的那么容易。

    http://docs.racket-lang.org/raco/cross-system.html

    假设您在 X 平台上运行。如果您安装了 Racket 在 X 和 Y 平台的球拍安装上,然后你可以使用 X 如文档中所述为 Y 运行 raco exeraco dist。 大概吧。

    有两个潜在的障碍:

    • 您需要安装平台 Y。

      如果 Y 是 Windows,那有点痛苦,因为 racket-lang.org 目前只为 Windows 提供“.exe”安装程序。你会有 在某些 Windows 机器上安装,然后复制 安装目录。

      我们可能应该在“.tgz”中为每个平台提供构建,或者 “.zip”格式,但我们还没有设置。

    • 毕竟它可能行不通。

      我们正在使用 Windows 的交叉编译来构建主要的 Racket 分发,所以如果 Y 是 Windows,事情可能会起作用。一世 不过,甚至还没有尝试过将 Y 用作 OS X 或 Linux 之类的东西。

    【讨论】:

      【解决方案3】:

      不可能。 这个问题是我之前想问的。 现在当我需要在另一个操作系统中编译某些东西时, 我使用VirtualBox启动一个vm系统来编译它。

      【讨论】:

        猜你喜欢
        • 2011-10-07
        • 1970-01-01
        • 1970-01-01
        • 2011-07-16
        • 2015-04-16
        • 1970-01-01
        • 1970-01-01
        • 2011-03-13
        • 2014-01-09
        相关资源
        最近更新 更多