Swift 可执行二进制文件是否需要 .swiftmodule、.swiftdoc 和 .build 文件到 运行?

Does Swift executable binary need the .swiftmodule, .swiftdoc and .build files to run?

我正在使用 Vapor 为 Ubuntu 编写我的 Swift 应用程序。我的任务是制作最小的 Docker 图像。我已经大幅缩减了图像,但出于好奇,我想知道我的最终可执行文件是否需要同一目录中的所有已编译 .module.doc.build 文件?

tl;dr:

您列出的 folders/files 是构建过程的副产品,可以安全丢弃。

就分发而言,您的应用程序与任何其他 Linux 可执行文件一样。您必须在目标系统上拥有所有可用的动态链接库。

这些包括 Swift 工具链的运行时库以及您的应用程序(或其下方的框架)与 (*) 链接的任何已编译 C 模块。

您可以使用ldd 命令检查可执行文件的依赖关系。 其中一些作为软件包提供,其中一些需要手动复制到目标系统。


(*) 对于 Vapor 2 应用程序,此类 C 模块是 libCHTTP.solibCSQLite.so,它们位于您的构建文件夹中。