【问题标题】:How do I install crystal-lang on rapsberry pi?如何在树莓派上安装 Crystal-lang?
【发布时间】:2017-08-05 09:18:57
【问题描述】:

当我尝试按照debian install instructions 将其添加到源时,我收到此错误。我猜这意味着它没有 arm 包。

无法获取 https://dist.crystal-lang.org/apt/dists/crystal/InRelease 无法在发布文件中找到预期的条目 'main/binary-armhf/Packages'(错误的 sources.list 条目或格式错误的文件)

我猜我可能需要从源代码安装它。我将如何使用 arm cpu 来做到这一点?当我检查它并运行 make 时,我得到了错误:

您的路径中需要有一个水晶可执行文件!生成文件:113: 目标“.build/水晶”的配方失败了:*** [.build/水晶] 错误 1

任何建议将不胜感激。

【问题讨论】:

    标签: arm raspberry-pi3 crystal-lang


    【解决方案1】:

    编辑:现在在 raspbian 上有一个半官方的水晶存储库,在这里查看:http://public.portalier.com/raspbian


    Crystal 不会为 ARM 构建 Debian 软件包,您是正确的,因为您需要从源代码构建。

    但是,Crystal 编译器是用 Crystal 编写的。这提出了如何让编译器构建编译器的明显问题。答案是交叉编译:在 x86 桌面计算机上构建一个 arm 二进制文件并将其复制。

    根据我上次交叉编译的记忆,这是一个快速的分步说明:

    1. 在 x86 台式 PC 上安装 Crystal,并检查它是否正常工作。
    2. 在桌面和树莓派上安装all required libraries。您需要在 Raspberry Pi 和桌面上使用相同的 LLVM 版本。这可能是最困难和最长的一步。您可以从 debian testing 为 ARM 安装 llvm 3.9,请参阅 this stackoverflow post 了解如何仅从 debian 测试中安装 LLVM。
    3. 在两台计算机上查看来自 git 的源代码,然后运行 ​​make deps。
    4. 通过在 git 存储库的根目录中运行以下命令来交叉编译编译器:
      ./bin/crystal build src/compiler/crystal.cr --cross-compile --target arm-unknown-linux-gnueabihf --release -s -D without_openssl -D without_zlib
      此命令将在您的当前目录中创建一个crystal.o 文件,并输出一个链接器命令(cc crystal.o -o crystal ...)。
    5. 将crystal.o复制到树莓派,然后运行链接器命令。请务必编辑llvm_ext.o 的绝对路径,使其指向Raspberry Pi 上的Crystal 结帐,而不是桌面上的结帐。还要确保命令中对 llvm-config 的所有引用都适用于正确的 LLVM 版本。例如,在 Raspbian 上将 /usr/local/bin/llvm-config 更改为 llvm-config-3.9。
    6. 在当前目录 (./crystal -v) 中运行 Crystal 可执行文件并确保其正常工作。
    7. 确保将CRYSTAL_PATH 环境变量设置为lib:/path/to/crystal/source/checkout/src,以便编译器在编译应用程序时可以找到标准库。

    【讨论】:

    • 非常感谢。因为我在我的mac上编译水晶,我还需要在我的树莓派上安装垃圾收集器吗?我不确定llvm_ext.so 在哪里。我在哪里编辑该路径?
    • 人们在使用shards 和Raspian 构建时遇到问题吗?在使用 crystal deps 或 shards install 时,我看到了“未定义符号:GC_get_push_other_roots”的变体。
    • 不,不是这样。更多答案在这里 Re that bug @pdoherty926 github.com/crystal-lang/crystal/issues/2896
    • 您好,我注意到在 raspbian 上编译水晶 0.26 — constxife.ru/blog/2018/10/16/rpi-crystal.html。它是俄语的,但你可以阅读 shell 命令。
    • Google 翻译似乎在您的网页上做得不错。干得好,@constXife translate.google.com/…
    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    • 2020-08-10
    • 2017-09-29
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多