Ответ 1
EDIT: теперь есть полуофициальный репозиторий для кристалла на raspbian, посмотрите здесь: http://public.portalier.com/raspbian
Crystal не создает пакеты Debian для ARM, и вы правы в том, что вам нужно будет строить из источника.
Однако компилятор Crystal написан в Crystal. Это представляет собой очевидную проблему, как получить компилятор для сборки компилятора. Ответ кросс-компиляции: создание двоичного двоичного файла на настольном компьютере x86 и его копирование.
Здесь быстрый шаг за шагом, основанный на моей памяти последнего времени, который я скомпилировал:
- Установите Crystal на настольный ПК x86 и проверьте, работает ли оно.
- Установите все необходимые библиотеки на рабочий стол и малину Pi. Вам понадобится такая же версия LLVM на малине Pi и на рабочем столе. Это, наверное, самый сложный и длинный шаг. Вы можете установить llvm 3.9 из debian testing для ARM, см. этот пост stackoverflow за то, как для установки только LLVM из тестирования debian.
- Проверьте источники с git на обоих компьютерах и запустите
make deps
. - Перекрестно компилируйте компилятор, запустив эту команду в корневом каталоге репозитория git:
This command will create a./bin/crystal build src/compiler/crystal.cr --cross-compile --target arm-unknown-linux-gnueabihf --release -s -D without_openssl -D without_zlib
crystal.o
file in your current directory, and also output a linker command (cc crystal.o -o crystal ...
). - Скопируйте
crystal.o
в малину pi и запустите команду компоновщика. Обязательно отредактируйте абсолютный путь доllvm_ext.o
, чтобы он указывал на проверку Crystal на вашем малине Pi, а не на вашем рабочем столе. Также убедитесь, что все ссылки наllvm-config
в команде соответствуют правильной версии LLVM. Например, сменив/usr/local/bin/llvm-config
наllvm-config-3.9
на Raspbian. - Запустите исполняемый файл crystal в вашем текущем каталоге (
./crystal -v
) и убедитесь, что он работает. - Убедитесь, что для параметра
CRYSTAL_PATH
для среды установлено значениеlib:/path/to/crystal/source/checkout/src
, чтобы компилятор мог найти стандартную библиотеку при компиляции приложений.