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.so
和 libCSQLite.so
,它们位于您的构建文件夹中。
我正在使用 Vapor 为 Ubuntu 编写我的 Swift 应用程序。我的任务是制作最小的 Docker 图像。我已经大幅缩减了图像,但出于好奇,我想知道我的最终可执行文件是否需要同一目录中的所有已编译 .module
、.doc
和 .build
文件?
tl;dr: 号
您列出的 folders/files 是构建过程的副产品,可以安全丢弃。
就分发而言,您的应用程序与任何其他 Linux 可执行文件一样。您必须在目标系统上拥有所有可用的动态链接库。
这些包括 Swift 工具链的运行时库以及您的应用程序(或其下方的框架)与 (*) 链接的任何已编译 C 模块。
您可以使用ldd
命令检查可执行文件的依赖关系。
其中一些作为软件包提供,其中一些需要手动复制到目标系统。
(*) 对于 Vapor 2 应用程序,此类 C 模块是 libCHTTP.so
和 libCSQLite.so
,它们位于您的构建文件夹中。