[英](Cross-)Compiling Swift for Raspberry PI
Swift現在是開源的。 有人試過為Raspberry PI編譯Swift嗎? 我開始做了,但我的8 GB SD卡似乎太小了;)是否可以從Ubuntu交叉編譯?
8GB SD卡工作正常,但您需要擴展根音量。 我有它工作, /dev/root
分區上的已用空間大約為3.1GB。
以下步驟基於Andrew Madsen的博客文章,稍微關注fdisk
的步驟。
從finnie.org下載Ubuntu 14.04 for Raspberry Pi 2的圖像並將其復制到SD卡上。 啟動Raspberry Pi。
登錄Raspberry Pi並更改分區大小。 /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
重新創建分區,然后在接下來的兩個提示中按Enter鍵接受默認值。
再次輸入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
使用update-alternatives為clang和clang ++提供/ usr / bin鏈接:
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的存儲庫密鑰:
wget -qO- http://dev.iachieved.it/iachievedit.gpg.key | sudo apt-key add -
將相應的存儲庫添加到sources.list:
echo "deb [arch=armhf] http://iachievedit-repos.s3.amazonaws.com/ trusty main" | sudo tee --append /etc/apt/sources.list
運行apt-get update:
sudo apt-get update
sudo apt-get install swift-2.2
安裝完成后,您就可以編譯Swift程序了!
打開您喜歡的文本編輯器,編寫程序並保存(例如'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在Raspberry Pi上運行
Swift Package Manager在2017年4月底通過PR-1098獲得了定制工具鏈支持。
我寫了關於如何在這里構建RaspberryPi工具鏈的詳細說明: macOS - > RasPi交叉編譯工具鏈 ,甚至反過來( 在RaspberryPi上構建macOS二進制文件 )以獲得它的樂趣。 這同樣適用於Intel-Linux到ARM-Linux的最小修改。 SwiftPM repo包含一個示例腳本 ,介紹如何將Intel-macOS用於Intel-Ubuntu。
你可以在這里找到關於Swift-on-ARM的2017-05-01更新: Swift 3.1.1更新為Raspberry Pi Zero / 1/2/3 。
作為一個小小的總結,這個答案不只是鏈接;-),ARM狀態2017-05-16:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.