Swift-进阶01:Swift源码编译

张建 lol

编译环境

  • MacOS Big Sur 11.0.1
  • Xcode 12.2
  • Python 2.x
  • brew install cmake ninja

编译步骤

  1. 准备阶段
  • 新建一个文件夹,命名为 swift-source

  • 由于拉取资源过程中,需要访问外网,所以需要梯子(各位童鞋自行解决)

  1. 第一步:clone swift源码

这里编译的是 swift-5.3.1-Release。可以自行在官网找到对应的 分支 ,需要注意的是:swift源码版本需要与Xcode版本匹配(官方编译文档有说明)

1
git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git
  1. 第二步:update-checkout

这步主要是 clone 编译 swift相关的库,否则在编译时一定会失败,这步很关键!(编译过程会很长,建议休息时间编译)

1
./swift/utils/build-script -r --debug-swift-stdlib --lldb
  1. 第三步:采用ninja编译

编译过程可以使用ninja,也可以使用Xcode,但是Xcode编译之后的支持性不是太好,所以这里采用ninja编译

1
./swift/utils/build-script -r --debug-swift-stdlib --lldb
  1. 使用VSCode调试Swift
  • 首先,在VSCode中安装插件

  • 添加配置文件 launch.json,并修改

需要注意的是 program 的路径需要与你编译的文件路径一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"version": "0.2.0",
"configurations": [

{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/build/Ninja-RelWithDebInfoAssert+stdlib-DebugAssert/swift-macosx-x86_64/bin/swift",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
  • 点击Debug运行,断住

然后过掉断点

看到以下结果就是运行成功了

  • 然后切换至终端,我们可以开始源码调试啦。

在终端中输入以下代码(也可以从swift文件拷贝)

源码中搜索 swift_allocObject(这个在后面文章会讲解,仅作为调试的例子),加上断点

  • 继续在终端输入 var t = CJLTeacher(),回车

这样,我们就可以愉快的调试的Swift源码啦,✿✿ヽ(°▽°)ノ✿

  • Post title:Swift-进阶01:Swift源码编译
  • Post author:张建
  • Create time:2023-04-24 18:37:10
  • Post link:https://redefine.ohevan.com/2023/04/24/Swift底层原理/Swift-进阶01:Swift源码编译 2/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
Swift-进阶01:Swift源码编译