Swift-5.3.1 源码编译

作者: Henry________ | 来源:发表于2020-12-07 17:05 被阅读0次

对于一门语言的探索一定是从探索API源码开始,而探索API源码除了一行一行的读代码,还可以直接进行编译调试,最大程度的利用开发工具。

源码编译

注:最终编译产物需要48G左右的硬盘空间

1. 源码下载

可以到Swift-git下载任意版本的Swift源码
当然也可以使用下方命令,直接下载。

git clone --branch swift-5.3.1-RELEASE https://github.com/apple/swift.git
  • 这个版本需要和Xcode版本最好保持一致。

2. 依赖下载

这一点Swift就很友好了,不想OC一样需要自己手动去下载依赖库,使用下方命令,这一部分要下载很多依赖文件,需要有一个比较好的网络。自己尝试下来最好是在早上进行下载,成功的概率高很多

./swift/utils/update-checkout --tag swift-5.3.1-RELEASE --clone

这里提供一份下载并且执行完第二步的代码,网不好的不用谢了哈~来个三连就行!!
链接:https://pan.baidu.com/s/1Q7bCGJ2CYHo33-x3UoZJSQ 密码:cp4w

3. 编译

由于xcode编译会有很多问题,这里选择使用VS Code编译器来进行编译.

编译过程还需要ninja,cmake
brew install cmake njnia

注:这一步需要,你懂得~



完成以上步骤,直接执行:
/swift/utils/build-script -r --debug-swift-stdlib --lldb

这个过程有一点长,而且CPU温度可能有点高,建议使用别人的电脑来执行,因为用自己的会心疼。。。。


最终编译产物

这里依旧提供一份完成第三步的代码,别忘了给个三连~~
链接:https://pan.baidu.com/s/1ZafU3-H9CW6seLNFx98jlQ 密码:4zua

使用vsCode来调试swift

由于我们使用vscode来进行编译,所以在调试的时候也需要用vscode来进行。

1. 首先需要安装CodeLLDB

点击就可以安装。


但是安装之后会出现:依赖的安装

这一步非常慢,反正我等了一夜都没有好,所有只能进行手动下载:vscode-lldb下载地址
选择darwin
手动安装CodeLLDB

安装完成后,根据提示提供vscode即可完成

2. json文件配置

使用以下json进行配置

{
    "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}"
        } ]
}

3. 启动调试

完成1,2两步,即可观察到3,4两步。

如果启动之后遇到以下问题:

首次运行看到这个不要慌,重新run一遍就好,应该是初次资源重定向的问题

启动之后会触发自动_dyld_start断点,直接过了就好。

4. 调试

到这一步,恭喜你你已经成功了!

编写Swift
增加断点

但是你会发现你的红框部分是没有数据的,如何解决呢?

  1. 先找到CodeLLDB的目录

  2. 然后找到编译过后的LLDB目录,将这里面的文件全部拷贝到第一步的CodeLLDB目录中

  3. 最后将第二步中lldb可执行文件拷贝到下图的目录下,并且改名为liblldb.dylib

参考:VSCode: Acquiring CodeLLDB platform package 速度慢

相关文章

  • Swift-5.3.1 源码编译

    对于一门语言的探索一定是从探索API源码开始,而探索API源码除了一行一行的读代码,还可以直接进行编译调试,最大程...

  • 编译移植Android ARM源码

    [TOC] 编译移植Android ARM源码 android源码编译的四个流程:1. 源码下载; 2. 构建编译...

  • lua 源码编译

    lua 源码编译 本文介绍了使用 Visual Studio 编译 lua 源码的方法。 下载源码 源码下载在 这...

  • WebRTC研究 (一) 编译源码

    @[TOC](WebRTC研究 (一) 编译源码) 1. WebRTC 源码编译 1.1 IOS平台编译 1.1....

  • python深入系列(一):python源码运行流程

    源码编译 要看懂源码,肯定要学会编译源码。先去官网下载源码文件,然后解压编译安装。linux环境下进解压目录依次运...

  • JVM内存模型与数据结构

    JAVA代码执行过程 JAVA源码编译由三个过程组成:源码编译机制、类加载机制、类执行机制。代码编译由JAVA源码...

  • WebRTC for Android-源码编译篇

    目录 编译环境搭建 代码同步 编译参数配置 源码编译 踩过的问题 总结 一、编译环境搭建 首先,WebRTC源码编...

  • ijkplayer(一) 编译

    源码获取 源码拉取 错误 解决 查看分支 分支切换 2 android 编译 2.1 源码编译 2.1.1 根目录...

  • 002-【Spring】源码编译

    Spring源码编译 1、理解编译过程 1)Spring源码依赖gradle进行编译 2)不同版本的Spring依...

  • hadoop3.1.2/gdal3.0.0源码编译

    编译gdal3.0.0源码使支持gdal读写hdfs, 首先编译hadoop3.1.2源码,然后编译gdal3.0...

网友评论

    本文标题:Swift-5.3.1 源码编译

    本文链接:https://www.haomeiwen.com/subject/dustgktx.html