swift 和 swiftc 和有什么不一样?

Shu*_*eng 8 macos swift

swift 和 swiftc 和有什么不一样?

我读过一些资源,说 swiftc 是 swift 的符号链接,但在 macOS Mojave 10.14.6 上却不是这样:

-rwxr-xr-x  1 root  wheel  18288 Jul 29 23:49 /usr/bin/swiftc
Run Code Online (Sandbox Code Playgroud)

swift 和 swiftc 都包含OVERVIEW: Swift compiler作为其--help菜单的一部分,但是虽然它们的选项相似,但它们是不同的。

Rob*_*ier 14

swift 是 Swift 的交互式环境 (REPL)。

swiftc 是 Swift 编译器。

中的文件/usr/bin只是当前所选版本的重定向器(基于xcode-select)。如果您查看文件大小,您会注意到它们只有 18kB。它们不是真正的可执行文件。

可以使用 xcrun 找到实际版本:

$ xcrun -f swift
/Applications/Xcode-beta7.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
Run Code Online (Sandbox Code Playgroud)

如果你查看那个目录,你会看到它swiftc是一个符号链接swift(这是一个 90MB 的可执行文件)。可执行文件只检查它运行的名称,并相应地调整其行为。

  • `swift` 还可以运行 swift 程序,并调用 Swift 包管理器。 (2认同)
  • 编译器不会将任何内容委托给 REPL。它们只是相同的二进制文件。这在 unix 世界中很常见。 (2认同)