swift raspberry-pi raspberry-pi2
finnie.orgfinnie.org

(Cross-) Compilación de Swift para Raspberry PI



raspberry-pi raspberry-pi2 (2)

El administrador de paquetes Swift obtuvo soporte personalizado para la cadena de herramientas a través de PR-1098 finales de abril de 2017.

Escribí instrucciones detalladas sobre cómo construir una cadena de herramientas de RaspberryPi aquí: macOS -> RasPi Cross Compilation Toolchain e incluso lo contrario ( compile los binarios de macOS en una RaspberryPi ) por el gusto de hacerlo. Lo mismo funcionaría para Intel-Linux a ARM-Linux con modificaciones mínimas. El repositorio de SwiftPM contiene una secuencia de comandos de ejemplo sobre cómo hacer esto para Intel-macOS a Intel-Ubuntu.

Puede encontrar una actualización 2017-05-01 en Swift-on-ARM aquí: Una actualización en Swift 3.1.1 para Raspberry Pi Zero / 1/2/3 .

Como un pequeño resumen, para que esta respuesta no sea solo los enlaces ;-), estado ARM 2017-05-16:

  • puede compilar Swift 3.1 / 3.1.1 en RaspberryPi Ubuntu
    • no olvide configurar swap, se requieren algunos parches mínimos para 3.1.1. El disco de 8GB puede ser un poco demasiado pequeño.
  • La compilación en Raspbian no parece funcionar todavía (la última versión conocida es 3.0.2)
  • puede compilar de forma cruzada Swift utilizando una cadena de herramientas personalizada, que es razonablemente fácil de configurar
    • necesitas una instantánea de SwiftPM (Swift 4) para esto (pero la propia cadena de herramientas puede ser 3.1 o incluso 3.0.2 con cambios menores)
  • también puede ejecutar (y compilar) Swift a través de Docker , por ejemplo, en HypriotOS.
  • hay un grupo Slack para Swift ARM: swift-arm

Swift es ahora Open Source. ¿Alguien intentó compilar Swift para una Raspberry PI? Comencé a hacerlo, pero mi tarjeta SD de 8 GB parece ser demasiado pequeña para eso;) ¿Es posible compilarlo desde Ubuntu?


Una tarjeta SD de 8GB funciona bien, pero necesitará extender el volumen raíz. Lo tengo funcionando y el espacio utilizado en /dev/root partición /dev/root es de alrededor de 3.1GB.

Los pasos a continuación se basan en la publicación del blog de Andrew Madsen con un poco de atención adicional en los pasos dentro de fdisk .

Obtener Ubuntu

Descargue una imagen de Ubuntu 14.04 para Raspberry Pi 2 de finnie.org y finnie.org en la tarjeta SD. Arranca la frambuesa pi.

Cambiar la particion

Inicie sesión en la Raspberry Pi y cambie el tamaño de la partición. El tamaño predeterminado para /dev/root es 1.7G con 1.1G disponible. Eso no es suficiente.

$ 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

Corre fdisk

sudo fdisk /dev/mmcblk0

Cuando se le solicite, ingrese p para ''imprimir la tabla de particiones''. Hay dos particiones

/dev/mmcblk0p1 * 2048 133119 65536 c W95 FAT32 (LBA) /dev/mmcblk0p2 133120 3670015 1768448 83 Linux

Cuando se le solicite, ingrese d (para eliminar), luego 2 . Luego, vuelva a crear la partición ingresando n , luego p , luego 2 , luego presione enter en las siguientes dos solicitudes aceptando los valores predeterminados.

Vuelva a ingresar p y verá que la segunda partición ahora es más grande, ahora se usa todo el espacio en una tarjeta de 8GB.

Device Boot Start End Blocks Id System /dev/mmcblk0p1 * 2048 133119 65536 c W95 FAT32 (LBA) /dev/mmcblk0p2 133120 15523839 7695360 83 Linux

Ingrese w para escribir los cambios en el disco, luego reinicie

sudo reboot

Cambiar el tamaño de la partición

Después del reinicio, cambie el tamaño del sistema de archivos de la partición ejecutando

sudo resize2fs /dev/mmcblk0p2

Espacio de intercambio

Configurar un archivo de intercambio haciendo

sudo apt-get install dphys-swapfile

Instala libicu-dev y clang-3.6

sudo apt-get install libicu-dev clang-3.6

Use las alternativas de actualización para proporcionar los enlaces / usr / bin para clang y 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

Luego, agregue la clave del repositorio de @ iachievedit:

wget -qO- http://dev.iachieved.it/iachievedit.gpg.key | sudo apt-key add -

Agregue el repositorio apropiado a sources.list:

echo "deb [arch=armhf] http://iachievedit-repos.s3.amazonaws.com/ trusty main" | sudo tee --append /etc/apt/sources.list

Ejecutar apt-get update:

sudo apt-get update

Instalar Swift

sudo apt-get install swift-2.2

Una vez completada la instalación, ¡está listo para compilar los programas Swift!

Escribe Swift

Abra su editor de texto favorito, escriba un programa y guárdelo (por ejemplo, en "hello.swift"):

let device = "Raspberry Pi 2!" print("Hello from Swift on /(device)")

Compilarlo

swiftc hello.swift

y ejecutarlo:

./hello Hello from Swift on Raspberry Pi 2!

¡Eso es! Swift corriendo en Raspberry Pi