作者:Joe酒唉,原文鏈接,原文日期:2016/09/24
譯者:X140Yu;校對:walkingway铐姚;定稿:CMB
編者注: 此文是我們上一篇在 BeagleBone Black 或 Raspberry Pi 3 上編譯 Swift 3.0 的續(xù)篇,這篇文章使用了由 Swift ARM 組織搭建的倉庫肛捍。
為了在一個 ARMv7 的系統(tǒng)上原生編譯 Swift 3.0隐绵,你需要做以下準備工作:
- 一個性能強勁的 ARMv7 設(shè)備;我們使用 BeagleBoard X15 編譯了大概 4 個小時拙毫,在 Raspberry Pi 3 上編譯了大概六個小時依许。
- 使用 USB3 flash drive 或者 UHS-I/class 10 microSD 之類的高速 IO 存儲設(shè)備,有 16GB 或以上存儲空間(我比較喜歡 Patriot EP Series 這種價格合適缀蹄,讀寫速度也不錯的產(chǎn)品)
- 支持編譯 Swift 的 Ubuntu 發(fā)行版峭跳,例如 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 的設(shè)備上編譯 Swift 至少需要 2G 的內(nèi)存袍患。如果你使用 Pi3 的話滞欠,可能就需要增大一些 swap 的空間,把內(nèi)存從 1G 翻倍到 2G肆良。
bash
# cd /var/cache
# sudo mkdir swap
# cd swap
# sudo fallocate -l 1G 1G.swap
# sudo mkswap 1G.swap
Setting 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 中產(chǎn)生的臨時文件。 -
distclean.sh
– 同時刪除 build 中產(chǎn)生的臨時文件還有已經(jīng)被替換過的舊倉庫。
開始動手吧揍拆!
在開始之前播揪,確保你已經(jīng):
- 安裝了所有的依賴包。
- 至少 2G 的可用 RAM。
- 從 Github 上 clone 了
build-swift
状共。
現(xiàn)在,clone 所有需要依賴的倉庫:
bash
# cd build-swift
# ./scripts/get.sh
在高速的 SD 卡上,這一步需要大概 15 分鐘舶吗。
現(xiàn)在可以編譯了肴捉。Swift 的 ARM team 使用 Jenkins 來跑這個編譯任務(wù),在沒有 CI 的情況下跺株,你可以使用 nohup
命令來確保你的編譯任務(wù)是持續(xù)工作的畦木,即使 terminal 把你給踢掉線也沒問題:
bash
# nohup ./scripts/package.sh > swiftbuild.log &
想要看編譯的輸出可以使用 tail -F swiftbuild.log
命令晾嘶。
現(xiàn)在耐心等待就可以了妒蛇。在 Raspberry Pi 3 上,一次完整干凈的 Swift 編譯可能會花上 6 個小時绣夺。但是結(jié)果卻是值得的吏奸,這是一個 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
來設(shè)置 PATH
蔼夜。 為了使用 swiftc
和 swift build
你還需要運行下面幾條命令:
bash
sudo apt-get install -y libicu-dev
sudo apt-get install -y 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
獲取幫助
如果你在編譯中遇到了問題,就加入 swift-arm Slack channel 吧瘤运!
本文由 SwiftGG 翻譯組翻譯窍霞,已經(jīng)獲得作者翻譯授權(quán),最新文章請訪問 http://swift.gg郁季。