我真的很喜歡使用swift進行嵌入式編程,因爲我覺得它是一個更好的C++替代品,我使用的處理器是ARM Cortex-M4F(http://www.ti.com/tool/ek-tm4c123gxl)。看看swift編譯器page,它說你可以從swift源生成LLVM IR,然後我希望能用LLVM進行交叉編譯。這可能嗎?使用swift編譯器來裸機?
7
A
回答
3
它絕對可以用Swift生成機器碼。實際上,默認情況下,當您在Xcode或swiftc命令行編譯器中編譯Swift程序時,生成的可執行文件由機器代碼組成。
LLVM字節碼是在構建過程中的某個點生成的,但生成的最終可執行文件是機器碼。有一些編譯器選項可以讓您只生成LLVM bytcode,但如果需要的話,通常不會直接執行LLVM字節碼,如Java運行時運行的Java字節碼。至於ARM的交叉編譯,我不確定它如何與swiftc工具一起工作,但是如果你構建一個Xcode iOS項目,它將生成一個ARM可執行文件。我確信swiftc編譯器具有生成ARM可執行文件所需的所有選項。然而,我能想到的一個問題是,Swift的許多功能取決於Apple的框架。不過,現在Swift已經開源了,各種各樣的東西逐漸會有更多純粹的快速庫。
0
我在探索這種可能性(使用Swift嵌入式應用程序)。由於Swift需要一個運行時,靜態編譯「Hello,World!」之後(在Ubuntu上,使用最新的Swift 3.0.2的x86-64)結果二進制大小超過5兆字節,這可能是「小」ARM控制器(如Cortex-M0)的問題。
相關問題
- 1. Beagleboard裸機編程
- 2. 我會用什麼編譯器來編寫機器語言?
- 3. 尋找一個用python編寫的裸機開源編輯器
- 4. 使用'忽略'來通過編譯器
- 5. 使用Java編譯器API來編譯多個java文件
- 6. 在dlmalloc編譯裸機(精靈)程序時生成的錯誤
- 7. Eigen示例代碼失敗ARM裸機編譯
- 8. Git:從裸機或非裸機導入
- 9. 在Swift中使用條件編譯來定義全局變量
- 10. 是否可以使用Swift包管理器來編譯和包含C庫?
- 11. 使用`sourceCpp`來編譯`fastLm`
- 12. 使用g ++編譯器編譯boost.asio
- 13. 使用scons編譯器編譯C++
- 14. 使用iconv編譯器在Windows上使用Mingw編譯器
- 15. Swift慢編譯時
- 16. 裸機的Java
- 17. 口譯VS編譯器VS虛擬機
- 18. Swift編譯器是否忽略未使用的函數?
- 19. Swift:使用泛型類型associatedtype的實例segfaults編譯器
- 20. 爲什麼編譯器強制我使用Swift 3
- 21. Swift 3.2 - 編譯器不讓我使用Darwin.kevent全局函數
- 22. 使用Spotify SDK與swift編譯器錯誤
- 23. Swift編譯器錯誤:使用未聲明的類型'EKEventStore'
- 24. 指定編譯器NVCC用於編譯主機代碼
- 25. 另一個Swift編譯器錯誤?
- 26. Swift編譯器優化導致凍結
- 27. Swift編譯器錯誤 - Xcode 6
- 28. Swift編譯器錯誤RealmSwift,Xcode 8.2
- 29. Cocoapods ReactiveKit swift編譯器錯誤
- 30. Swift編譯器bug可能嗎?
大部分對蘋果框架的依賴都消失了,Foundation已經很快被重新實現,並且也是開源的。 –
Swift需要Objective-C運行時,它在嵌入式環境中相當大(根據[this person](至少600KB)(http://xmaker.mx/archives/14),Objective-C運行於SiLabs Cortex -M4)。如果你有外部存儲器燒錄,那麼這不是一個問題。 –
@TonyK www.swift.org,swift不再依賴於目標c。它已經開源 –