簡體   English   中英

(交叉)為Raspberry PI編譯Swift

[英](Cross-)Compiling Swift for Raspberry PI

Swift現在是開源的。 有人試過為Raspberry PI編譯Swift嗎? 我開始做了,但我的8 GB SD卡似乎太小了;)是否可以從Ubuntu交叉編譯?

8GB SD卡工作正常,但您需要擴展根音量。 我有它工作, /dev/root分區上的已用空間大約為3.1GB。

以下步驟基於Andrew Madsen的博客文章,稍微關注fdisk的步驟。

獲取Ubuntu

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

安裝libicu-dev和clang-3.6

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

安裝Swift

sudo apt-get install swift-2.2

安裝完成后,您就可以編譯Swift程序了!

寫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:

  • 你可以在RaspberryPi Ubuntu上編譯Swift 3.1 / 3.1.1
    • 不要忘記設置交換,3.1.1需要一些最小的補丁。 8GB磁盤可能有點小。
  • Raspbian上的編譯似乎還沒有工作(最后的已知版本是3.0.2)
  • 您可以使用自定義工具鏈交叉編譯Swift,這很容易設置
    • 你需要為此獲取一個SwiftPM快照(Swift 4)(但工具鏈本身可以是3.1甚至3.0.2 w /次要更改)
  • 你也可以通過Docker運行(並編譯) Swift ,例如在HypriotOS中。
  • Swift ARM有一個Slack組: swift-arm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM