Swift теперь является Open Source. Кто-нибудь пытался собрать Swift для малины PI? Я начал делать, но моя 8-Гбайт SD-карта кажется слишком маленькой для нее;) Можно ли переписать ее с Ubuntu?
(Кросс-компиляция) Swift для малины PI
Ответ 1
SD-карта на 8 ГБ работает нормально, но вам необходимо увеличить объем корня. Я работаю, и используемое пространство в разделе /dev/root
составляет около 3,1 ГБ.
Следующие шаги основаны на сообщении блога Andrew Madsen с небольшим дополнительным фокусом на шагах внутри fdisk
.
Получить Ubuntu
Загрузите изображение Ubuntu 14.04 для Raspberry Pi 2 из finnie.org и скопируйте его на SD-карту. Загрузите малину Pi.
Измените раздел
Войдите в малиновый Pi и измените размер раздела. Размер по умолчанию для /dev/root
равен 1.7G с доступным 1.1G. Этого недостаточно.
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 1.7G 540M 1.1G 35% /
devtmpfs 458M 4.0K 458M 1% /dev
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 93M 228K 93M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 462M 0 462M 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/mmcblk0p1 64M 20M 45M 31% /boot/firmware
Запустить fdisk
sudo fdisk /dev/mmcblk0
В командной строке введите p
для 'print the partition table'. Существует два раздела
/dev/mmcblk0p1 * 2048 133119 65536 c W95 FAT32 (LBA)
/dev/mmcblk0p2 133120 3670015 1768448 83 Linux
При появлении запроса введите d
(для удаления), затем 2
. Затем заново создайте раздел, введя n
, затем p
, затем 2
, затем нажмите enter в следующих двух приглашениях, принимающих значения по умолчанию.
Введите p
снова и увидите, что второй раздел теперь больше, теперь используется все пространство на карте 8 ГБ.
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 * 2048 133119 65536 c W95 FAT32 (LBA)
/dev/mmcblk0p2 133120 15523839 7695360 83 Linux
Введите w
, чтобы записать изменения на диск, затем перезагрузите
sudo reboot
Изменение размера раздела
После перезагрузки измените размер файловой системы разделов, запустив
sudo resize2fs /dev/mmcblk0p2
Место подкачки
Настройте файл подкачки, выполнив
sudo apt-get install dphys-swapfile
Установить libicu-dev и clang-3.6
sudo apt-get install libicu-dev clang-3.6
Используйте альтернативы обновлений для предоставления /usr/bin ссылок для clang и clang++:
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.6 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.6 100
Затем добавьте ключ репозитория @iachievedits:
wget -qO- http://dev.iachieved.it/iachievedit.gpg.key | sudo apt-key add -
Добавьте соответствующий репозиторий в sources.list:
echo "deb [arch=armhf] http://iachievedit-repos.s3.amazonaws.com/ trusty main" | sudo tee --append /etc/apt/sources.list
Запустите apt-get update:
sudo apt-get update
Установить Swift
sudo apt-get install swift-2.2
После завершения установки вы готовы скомпилировать программы Swift!
Write Swift
Откройте свой любимый текстовый редактор, напишите программу и сохраните ее (например, на hello.swift):
let device = "Raspberry Pi 2!"
print("Hello from Swift on \(device)")
Скомпилировать его
swiftc hello.swift
и запустите его:
./hello
Hello from Swift on Raspberry Pi 2!
Вот оно! Быстрая работа над малиной Pi
Ответ 2
Менеджер пакетов Swift получил пользовательскую поддержку инструментальной привязки через PR-1098 конец апреля 2017 года.
Я написал подробные инструкции о том, как построить здесь toolchain RaspberryPi: macOS → Инструментальная кросс-компоновка RasPi и даже наоборот (строить бинарные файлы macOS на RaspberryPi) для удовольствия. То же самое можно было бы использовать для Intel-Linux до ARM-Linux с минимальными изменениями. Репо SwiftPM содержит пример script о том, как это сделать для Intel-macOS для Intel-Ubuntu.
Вы можете найти обновление 2017-05-01 для Swift-on-ARM здесь: Обновление для Swift 3.1.1 для Raspberry Pi Zero/1/2/3.
Как небольшое резюме, так что этот ответ - это не просто ссылки;-), статус ARM 2017-05-16:
- вы можете скомпилировать Swift 3.1/3.1.1 на RaspberryPi Ubuntu
- не забудьте настроить swap, требуются некоторые минимальные исправления для 3.1.1. 8 ГБ диск может быть немного мало.
- компиляция на Raspbian пока не работает (последняя известная версия 3.0.2)
- вы можете перекрестно скомпилировать Swift с помощью специальной инструментальной цепочки, которая
достаточно легко настроить
- вам нужно получить снимок SwiftPM (Swift 4) для этого (но сама инструментальная цепочка может быть 3.1 или даже 3.0.2 с небольшими изменениями)
- вы также можете запустить (и скомпилировать) Swift через Docker, например в HypriotOS.
- существует группа Slack для Swift ARM:
swift-arm