如何在raspberry pi上安装crystal-lang?

问题描述 投票:18回答:1

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

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

我猜我可能需要从源代码安装它。我怎么会用arm cpu做这件事?当我检查并运行make我得到错误:

你需要在你的道路上有一个水晶可执行文件! Makefile:113:目标'.build / crystal'的配方失败make:*** [.build / crystal]错误1

任何建议将不胜感激。

arm raspberry-pi3 crystal-lang
1个回答
18
投票

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


Crystal不会为ARM构建Debian软件包,而且你需要从源代码构建才是正确的。

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

基于我上次交叉编译时的记忆,这是一个快速的步骤:

  1. 在x86台式PC上安装Crystal,并检查它是否有效。
  2. 在桌面和Raspberry Pi上安装all required libraries。您需要在Raspberry Pi和桌面上使用相同的LLVM版本。这可能是最艰难和最长的一步。您可以从debian testing为ARM安装llvm 3.9,有关如何仅从debian测试安装LLVM的信息,请参阅this stackoverflow post
  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复制到raspberry pi,然后运行链接器命令。请务必编辑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,以便编译器在编译应用程序时可以找到标准库。
© www.soinside.com 2019 - 2024. All rights reserved.