在 Linux 系统中安装 Swift 并非像 apt install swift 那样简单。你需要手动下载官方工具链,并正确配置两个关键环境变量——尤其是 LD_LIBRARY_PATH。否则,即使 swift --version 能正常显示版本号,执行 swift build 时仍然会失败。这并非玄学,而是 Swift 运行时依赖动态库的底层机制决定的。
直接说结论:即使终端中 swift --version 输出正常,只要 LD_LIBRARY_PATH 配置有误,swift build 必然失败。这个陷阱很多新手都会遇到,看似莫名其妙,实则完全可以预期。
下载前,务必确认系统兼容性
Swift 官方仅针对 Ubuntu/Debian 系提供预编译包,CentOS 或 RHEL 用户无法直接安装。截至 2026 年中,推荐的两个版本是稳定的 swift-5.9-RELEASE 或尝鲜版 swift-6.0-SNAPSHOT-2026-04-15-a。
但别急着下载,有几个细节需留意:
- 首先,使用
uname -m确认你的 CPU 架构。x86_64 架构选择ubuntu22.04或ubuntu24.04包;若为 ARM 架构(如服务器或树莓派),则必须选择名称中包含aarch64的版本。 - 运行
ldd --version查看 glibc 版本。Ubuntu 22.04 及更新版本通常可直接运行;但若仍在使用 Ubuntu 18.04 或更旧系统,建议降级至swift-5.7,否则解压后执行swift时可能遇到“No such file or directory”错误——实际上并非文件缺失,而是动态库链接失败。 - 另外,不要随意复制网上旧教程中的 wget 链接,许多已失效(404)。正确做法是前往 Swift 官网的 Linux 栏目,找到对应系统与版本的最新 Release 或 Snapshot 链接,手动复制。
解压后,两条环境变量必不可少
swift 命令本身只是一个外壳,真正的核心——libswiftCore.so、libsourcekitd.so 等动态库——位于 usr/lib/swift/linux/ 目录下。Linux 的动态链接器默认不会扫描该路径。因此,仅设置 PATH 就像买了电视却忘了装电池,遥控器按了也没反应。
正确的操作流程如下:
- 解压到用户目录,例如
tar xzf swift-5.9-RELEASE-ubuntu22.04.tar.gz -C ~/,会得到~/swift-5.9-RELEASE-ubuntu22.04/目录。 - 打开
~/.bashrc,在末尾添加以下两行(请根据实际路径修改):
export PATH=$HOME/swift-5.9-RELEASE-ubuntu22.04/usr/bin:$PATH
export LD_LIBRARY_PATH=$HOME/swift-5.9-RELEASE-ubuntu22.04/usr/lib/swift/linux:$LD_LIBRARY_PATH - 执行
source ~/.bashrc使配置生效。如果你使用 VSCode,请务必完全重启窗口——它的集成终端不会自动继承新环境变量。 - 另外,有一个容易被忽略的干扰项:如果你之前通过 Snap 安装过 Swift(例如从 Ubuntu 软件中心安装),必须首先执行
sudo snap remove swift。因为 Snap 的沙盒机制会屏蔽手动设置的LD_LIBRARY_PATH,导致配置始终无效。
VSCode 调试前的三重检查
安装了 vonage.vscode-swift 插件,并不代表就能顺利调试。它仅提供了界面,真正的核心——sourcekit-lsp 和 lldb——需要正确配置且版本匹配。
建议按照以下顺序检查:
- 运行
which sourcekit-lsp,输出结果应为你的 Swift 工具链路径,例如/home/xxx/swift-5.9-RELEASE-ubuntu22.04/usr/bin/sourcekit-lsp。如果输出是系统路径或其他位置,说明路径配置有误。 - 在 VSCode 设置中显式填写
swift.path.sourceKitLSP字段,值即为上述绝对路径。自动发现功能不可靠,手动指定最为稳妥。 lldb版本必须与 Swift 工具链匹配。Ubuntu 22.04+ 推荐安装lldb-16(sudo apt install lldb-16),并在.vscode/launch.json中固定配置:"lldb.executable": "/usr/bin/lldb-16"。
整个过程中,最容易被忽视的是 LD_LIBRARY_PATH 未正确生效,或 VSCode 未重启导致 sourcekit-lsp 启动后立即退出。此时查看日志,通常只会看到空行或简单的“connection closed”,完全不会提示具体问题所在。
正是这些看似微不足道的细节,往往决定了 Swift 在 Linux 上能否顺利运行。谨慎对待,总是值得的。
