如何在树莓派上安装crystal-lang?

18

按照debian安装指南的步骤将其添加到资源时,我收到了以下错误信息。我猜测这意味着没有适用于arm架构的软件包。

获取失败:https://dist.crystal-lang.org/apt/dists/crystal/InRelease Release文件中没有找到预期的项'main/binary-armhf/Packages'(错误的sources.list条目或格式不正确)

我想我可能需要从源代码安装它。我该如何在arm处理器上进行安装? 当我查看并运行make时,我会收到以下错误:

你需要在你的路径中有一个crystal可执行文件! Makefile:113: recipe for target '.build/crystal' failed make: *** [.build/crystal] Error 1

任何建议将不胜感激。

1个回答

19

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


Crystal 没有为 ARM 构建 Debian 软件包,你正确地指出了你需要从源代码构建。

然而,Crystal 编译器是用 Crystal 写的,这就带来了明显的问题,如何获得编译器来构建编译器。答案是交叉编译:在 x86 台式计算机上构建 ARM 二进制文件并将其复制到树莓派上。

以下是根据我上次交叉编译时的记忆所做的快速步骤:

  1. 在 x86 台式 PC 上安装 Crystal,并检查其是否正常工作。
  2. 在台式机和 Raspberry Pi 上安装所有必需的库。您需要在 Raspberry Pi 和台式机上使用相同的 LLVM 版本。这可能是最难和耗时的步骤。您可以从Debian Testing中安装 ARM 的 LLVM 3.9。请参见此 StackOverflow 帖子,了解如何仅安装来自 Debian Testing 的 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 的绝对路径,使其指向你在树莓派上的 Crystal 检出,而不是在桌面上的检出。还要确保命令中所有对 llvm-config 的引用都是针对正确的 LLVM 版本。例如,在 Raspbian 上将 /usr/local/bin/llvm-config 更改为 llvm-config-3.9
  6. 在当前目录下运行 crystal 可执行文件 (./crystal -v),并确保它可以正常工作。
  7. 确保设置了 CRYSTAL_PATH 环境变量为 lib:/path/to/crystal/source/checkout/src,以便编译应用程序时编译器可以找到标准库。

非常感谢。由于我正在我自己的 Mac 上编译 Crystal,那么我是否仍需要在我的 Raspberry Pi 上安装垃圾收集器呢?我不确定 llvm_ext.so 位于哪里。我应该在哪里编辑路径呢? - isaacsloan
2
人们在使用Raspian构建时是否遇到了使用shards的问题?当使用crystal depsshards install时,我看到了"undefined symbol: GC_get_push_other_roots"的变化。 - pdoherty926
1
不对,那不是它。这里有更多答案。关于那个错误@pdoherty926 https://github.com/crystal-lang/crystal/issues/2896 - Shayne
3
你好,我记录了有关在Raspbian上编译crystal 0.26的笔记- http://constxife.ru/blog/2018/10/16/rpi-crystal.html。该页面使用俄语编写,但你可以阅读其中的shell命令。 - constXife
3
谷歌翻译似乎在处理您的页面时做得不错。干得好,@constXife。 链接:https://translate.google.com/translate?hl=en&sl=ru&tl=en&u=http%3A%2F%2Fconstxife.ru%2Fblog%2F2018%2F10%2F16%2Frpi-crystal.html - Shayne
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接