主要观点:在 Alpine Linux 上构建 Swift 应用时,发现 Swift 工具链不支持,探讨了几种将 Swift 应用部署到 Alpine 的方法。
关键信息:
- 选项 1:使用预构建的动态链接二进制文件,通过安装
gcompat
或在 chroot 中设置加载器可使其在 Alpine 上运行,但设置较繁琐。 - 选项 2:创建包含(基于 glibc 的)Swift 编译二进制文件及其动态库依赖的包,通过在 Alpine 上的 shell 脚本进行 chroot 构建,最后集成到
APKBUILD
脚本创建 Alpine 包。 - 选项 3:使用 Swift 6 支持的(交叉)编译静态 Linux 二进制文件,可在 macOS 上为所有架构创建,还创建 Go 脚本将二进制发布包转换为
.apk
文件。
重要细节: - 选项 2 中 Swift 编译调用的命令及各参数含义,如
--dynamic-linker
和-rpath
。 - 不同打包方式的包大小比较,包括动态链接在 macOS 和 Linux 上、动态链接并静态链接 Swift stdlib 在 Linux 上、包含系统库在 Linux 上以及静态链接在 Linux 上的包大小分别为 252 KiB、1.2 MiB、43.4 MiB、48.1 MiB 和 100.4 MiB。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。