Swift现在已经成为开源项目。有人尝试编译适用于树莓派的Swift吗?我开始尝试,但我的8GB SD卡似乎太小了;) 是否可以从Ubuntu进行交叉编译?
Swift现在已经成为开源项目。有人尝试编译适用于树莓派的Swift吗?我开始尝试,但我的8GB SD卡似乎太小了;) 是否可以从Ubuntu进行交叉编译?
/dev/root
分区上的已使用空间约为3.1GB。fdisk
内部的步骤上进行了一些额外的重点介绍。
/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
,表示“打印分区表”。有两个分区。/dev/mmcblk0p1 * 2048 133119 65536 c W95 FAT32 (LBA)
/dev/mmcblk0p2 133120 3670015 1768448 83 Linux
d
(表示删除),然后输入2
。然后,通过输入n
、p
、2
,并在下两个提示处按回车接受默认值来重新创建分区。p
,看到第二个分区现在更大了,现在一个8GB的卡上的所有空间都被使用了。 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
sudo apt-get install libicu-dev clang-3.6
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
wget -qO- http://dev.iachieved.it/iachievedit.gpg.key | sudo apt-key add -
echo "deb [arch=armhf] http://iachievedit-repos.s3.amazonaws.com/ trusty main" | sudo tee --append /etc/apt/sources.list
sudo apt-get update
sudo apt-get install swift-2.2
打开您喜欢的文本编辑器,编写程序并保存(例如保存为'hello.swift'):
let device = "Raspberry Pi 2!"
print("Hello from Swift on \(device)")
swiftc hello.swift
并运行它:
./hello
Hello from Swift on Raspberry Pi 2!
就是这样!在树莓派上运行Swift
William Dillon (@hpux735) 宣布他已成功地将 Swift 编译器构建为 armv7 系统,例如 BeagleBone、Raspberry Pi 2 等。一段时间后,@iachievedit 将 William 的工作打包并通过 apt-get 提供给 Debian 和 Ubuntu。
- Olaf2017年4月底,Swift Package Manager通过PR-1098获得了自定义工具链支持。
我在这里编写了详细的说明,介绍如何构建RaspberryPi工具链:macOS -> RasPi交叉编译工具链,甚至可以反过来(在RaspberryPi上构建macOS二进制文件)只是为了好玩。对于Intel-Linux到ARM-Linux,只需要进行最小限度的修改即可。SwiftPM存储库包含一个示例脚本,介绍如何在Intel-macOS到Intel-Ubuntu之间执行此操作。
您可以在此处找到有关Swift-on-ARM的2017-05-01更新:关于树莓派Zero/1/2/3的Swift 3.1.1更新。
简要概述一下,以便这个答案不只是链接;-),截至2017-05-16,ARM状态如下:
swift-arm