首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(交叉)编译Swift for Raspberry PI

(交叉)编译Swift for Raspberry PI
EN

Stack Overflow用户
提问于 2015-12-06 00:31:32
回答 2查看 4K关注 0票数 21

Swift现在是开源的。有没有人尝试过为Raspberry PI编译Swift?我开始这样做了,但我的8 GB SD卡对它来说似乎太小了;)可以从Ubuntu交叉编译吗?

EN

回答 2

Stack Overflow用户

发布于 2016-01-08 21:37:37

8 8GB的SD卡可以正常工作,但您需要扩展根卷。我已经让它工作了,/dev/root分区上的已用空间大约是3.1 is。

下面的步骤基于Andrew Madsen的博客文章,并特别关注了fdisk中的步骤。

获取Ubuntu

finnie.org下载用于Raspberry Pi 2的Ubuntu14.04镜像,并将其复制到SD卡上。启动Raspberry Pi。

更改分区

登录到Raspberry Pi并更改分区大小。/dev/root默认大小为1.7G,可用容量为1.1G。这还不够。

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
sudo fdisk /dev/mmcblk0

在提示符下输入p,表示“打印分区表”。有两个分区

代码语言:javascript
复制
/dev/mmcblk0p1   *        2048      133119       65536    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          133120     3670015     1768448   83  Linux

出现提示时,输入d (表示删除),然后输入2。然后,通过依次输入np2重新创建分区,然后在接下来的两个提示符下按enter键,接受默认值。

再次输入p,可以看到第二个分区变大了,现在8 GB卡上的所有空间都用完了。

代码语言:javascript
复制
           Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1   *        2048      133119       65536    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          133120    15523839     7695360   83  Linux

输入w将更改写入磁盘,然后重新启动

代码语言:javascript
复制
sudo reboot

调整分区大小

在重新引导之后,通过运行以下命令来调整分区文件系统的大小

代码语言:javascript
复制
sudo resize2fs /dev/mmcblk0p2

交换空间

通过执行以下操作来设置交换文件

代码语言:javascript
复制
sudo apt-get install dphys-swapfile

安装libicu dev和clang-3.6

代码语言:javascript
复制
sudo apt-get install libicu-dev clang-3.6

使用update-alternatives为clang和clang++提供/usr/bin链接:

代码语言:javascript
复制
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

然后,添加@iachievedit的存储库密钥:

代码语言:javascript
复制
wget -qO- http://dev.iachieved.it/iachievedit.gpg.key | sudo apt-key add -

将适当的存储库添加到sources.list:

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

运行apt-get update:

代码语言:javascript
复制
sudo apt-get update

安装Swift

代码语言:javascript
复制
sudo apt-get install swift-2.2

安装完成后,您就可以编译Swift程序了!

写Swift

打开你最喜欢的文本编辑器,编写一个程序,然后保存它(例如,保存到‘hello.swift’):

代码语言:javascript
复制
let device = "Raspberry Pi 2!" 
print("Hello from Swift on \(device)")

编译它

代码语言:javascript
复制
swiftc hello.swift

并运行它:

代码语言:javascript
复制
./hello

Hello from Swift on Raspberry Pi 2!

就这样!Swift在Raspberry Pi上运行

票数 7
EN

Stack Overflow用户

发布于 2017-05-16 22:01:30

Swift包管理器于2017年4月底通过PR-1098获得了自定义工具链支持。

我在这里写了关于如何构建RaspberryPi工具链的详细说明:macOS -> RasPi Cross Compilation Toolchain,甚至是相反的(build macOS binaries on a RaspberryPi)。这同样适用于Intel-Linux到ARM-Linux,只需进行最少的修改。SwiftPM代码库包含一个example script,介绍如何从英特尔-macOS到英特尔-Ubuntu执行此操作。

你可以在这里找到2017-05-01关于Swift- on -ARM的更新:An Update on Swift 3.1.1 For Raspberry Pi Zero/1/2/3

作为一个小总结,所以这个答案不仅仅是链接;-),ARM status 2017-05-16:

  • 你可以在RaspberryPi Ubuntu
    • 上编译Swift 3.1/3.1.1别忘了设置交换,3.1.1需要一些最小的补丁。8 8GB磁盘对little.

来说可能有点小

在Raspbian上的

  • 编译似乎还不能工作(最新的已知版本是3.0.2 )
  • 你可以使用一个自定义的工具链交叉编译,这对于设置Swift
    • 是相当容易的你需要为此抓取一个SwiftPM快照(Swift 4) (但工具链本身可以是3.1甚至3.0.2 w/ minor Swift

Swift ARM您还可以运行(并编译)

  • ,例如,在Swift ARM中,swift-arm

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34107889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档