在 ARMv7 的设备上编译 Swift 3.0

在 ARMv7 的设备上编译 Swift 3.0,第1张

概述作者:Joe,原文链接,原文日期:2016/09/24 译者:X140Yu;校对:walkingway;定稿:CMB 编者注: 此文是我们上一篇在 BeagleBone Black 或 Raspberry Pi 3 上编译 Swift 3.0 的续篇,这篇文章使用了由 Swift ARM 组织搭建的仓库。 为了在一个 ARMv7 的系统上原生编译 Swift 3.0,你需要做以下准备工作: 一个性

作者:Joe,原文链接,原文日期:2016/09/24
译者:X140Yu;校对:walkingway;定稿:CMB

编者注: 此文是我们上一篇在 BeagleBone Black 或 RaspBerry Pi 3 上编译 Swift 3.0 的续篇,这篇文章使用了由 Swift ARM 组织搭建的仓库。

为了在一个 ARMv7 的系统上原生编译 Swift 3.0,你需要做以下准备工作:

一个性能强劲的 ARMv7 设备;我们使用 BeagleBoard X15 编译了大概 4 个小时,在 Raspberry Pi 3 上编译了大概六个小时。

使用 USB3 flash drive 或者 UHS-I/class 10 microSD 之类的高速 IO 存储设备,有 16GB 或以上存储空间(我比较喜欢 Patriot EP Series 这种价格合适,读写速度也不错的产品)

支持编译 Swift 的 Ubuntu 发行版,例如 Ubuntu Xenial 16.04

耐心

安装编译的依赖

编译 Swift 需要很多依赖。你可以使用下面的一条命令把它们都安装上:

sudo apt-get install -y git cmake ninja-build clang uuID-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config autoconf libtool systemtap-sdt-dev libcurl4-openssl-dev

增大 swap 的空间

在 ARMv7 的设备上编译 Swift 至少需要 2G 的内存。如果你使用 Pi3 的话,可能就需要增大一些 swap 的空间,把内存从 1G 翻倍到 2G。

bash# cd /var/cache# sudo mkdir swap# cd swap# sudo fallocate -l 1G 1G.swap# sudo mkswap 1G.swapSetting up swapspace version 1,size = 1024 MiB (1073737728 bytes)no label,UUID=184d002a-2f15-4b23-8360-8e792badc6a2# sudo chmod 600 1G.swap# sudo swapon 1G.swap
使用 build-swift

build-swift 是我们的一个 Github 仓库,里面有几个 helper 脚本,使其在 ARM 下编译 Swift 更加轻松。

bash# git clone https://github.com/swift-arm/build-swift# cd build-swift

默认 build-swift 会切换到 swift-3.0 分支。

scripts 文件夹中的脚本都比较简单:

get.sh – 下载所有在编译 Swift 时需要的仓库;这些仓库都来自 Swift ARM 组织,而且特别为 ARMv7 打了补丁。

update.sh – 把本地的仓库都更新到与 Github 相同的最新版本。

package.sh – 运行 Swift 的 build-script

clean.sh – 删除 build 中产生的临时文件。

distclean.sh – 同时删除 build 中产生的临时文件还有已经被替换过的旧仓库。

开始动手吧!

在开始之前,确保你已经:

安装了所有的依赖包。

至少 2G 的可用 RAM。

从 Github 上 clone 了 build-swift

现在,clone 所有需要依赖的仓库:

bash# cd build-swift# ./scripts/get.sh

在高速的 SD 卡上,这一步需要大概 15 分钟。

现在可以编译了。Swift 的 ARM team 使用 Jenkins 来跑这个编译任务,在没有 CI 的情况下,你可以使用 nohup 命令来确保你的编译任务是持续工作的,即使 terminal 把你给踢掉线也没问题:

bash# nohup ./scripts/package.sh > swiftbuild.log &

想要看编译的输出可以使用 tail -F swiftbuild.log 命令。

现在耐心等待就可以了。在 RaspBerry Pi 3 上,一次完整干净的 Swift 编译可能会花上 6 个小时。但是结果却是值得的,这是一个 swift.tar.gz 的包,可以把它安装在运行 Ubuntu Xenial 的 RaspBerry Pi 2 或 Pi 3 上(不要把它安装在 Raspbian 机器上,你会失望的)。我会把 Swift 像下面一样安装在 /opt/swift/ 中:

bash# cd /opt# mkdir -p swift/swift-3.0# cd swift/swift-3.0# tar -xzvf /path/to/swift.tar.gz

你可以添加 export PATH=/opt/swift/swift-3.0/usr/bin:$PATH 来设置 PATH。 为了使用 swiftcswift build 你还需要运行下面几条命令:

bashsudo apt-get install -y libicu-devsudo apt-get install -y clang-3.6sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.6 100sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.6 100
获取帮助

如果你在编译中遇到了问题,就加入 swift-arm Slack channel 吧!

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg。

总结

以上是内存溢出为你收集整理的在 ARMv7 的设备上编译 Swift 3.0全部内容,希望文章能够帮你解决在 ARMv7 的设备上编译 Swift 3.0所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1090445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存