Swift on OS X compiling for Linux?

倖福魔咒の 提交于 2019-11-29 09:36:19

A pure Swift application which is not importing any framework can now be compiled for iOS, OS X and for Linux.

You will generate different executables, because it's different platforms, but the code source can be the same, it just has to be compiled for the respective platform.

The difference is when you import frameworks.

If you import UIKit to make an iOS application, obviously you won't be able to compile this on Linux, because Linux doesn't have those iOS UIKit libraries, they're only available on a Mac via Xcode.

If you import Cocoa to make an OS X application, the same logic applies, it works only for OS X.

The same way, you can make Swift code that only works on Linux if you import specific Linux libraries, like Glibc, that won't work on the Mac.

Etc, etc.

What you need to remember is that the programming language isn't that relevant when it comes to make applications for a platform, it's the frameworks and libraries that you're linked to that are decisive.

Different Swift versions come with different compilers (different toolchains, actually) so to answer directly, no you can't compile for Linux Swift with the normal OS X Swift compiler, you have to use the Swift.org's one.

hnh

The Swift Package Manager got custom toolchain support via PR-1098 end of April 2017.

This allows you to setup cross compiler toolchains (macOS to Ubuntu, even the reverse). The SwiftPM repo contains an example script which sets up a Intel-macOS => Intel-Ubuntu toolchain.

As Eric says, you can of course only use frameworks available on the target platform. But yes, you can now build a Linux Swift project on macOS. (as mentioned by joels in the comment you can also do this via Docker very easily)

Related: (Cross-)Compiling Swift for Raspberry PI

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!