为 Alpine Linux 打包 Swift 应用程序

主要观点:在 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。
阅读 10
0 条评论