swift和swiftc有什么区别?
我阅读了一些资料,称swiftc是指向swift的符号链接,但在macOS Mojave 10.14.6上并非如此:
-rwxr-xr-x 1 root wheel 18288 Jul 29 23:49 /usr/bin/swiftc
无论是 swift 还是 swiftc,它们的 --help
菜单都包含 OVERVIEW: Swift compiler
,但是它们的选项虽然类似,但是不同。
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
如果你查看那个目录,你会看到swiftc
是一个指向swift
的符号链接(这是一个90MB的可执行文件)。该可执行文件只是检查它被运行时使用的名称,并相应地调整其行为。
/use/bin/swift
没有实现为指向当前选择的xcrun
版本的符号链接? - Shuzhengswiftc foo.swift
,那么参数数组将是[swifc, foo.swift]
,正如Rob所说,它是指向swift
二进制文件的符号链接。因此,根据第一个参数,它将以不同的方式进行处理。 - mfaani