Clion 如何利用 WSL2 编译 MySQL 5.7 构建源码阅读环境
开发环境
- 操作系统:Windows 11 Pro 22H2、WSL2 (Ubuntu-22.04)
- IDE:CLion 2021.3.4
- 编译环境:CMake 3.21、gdb 11.1、openssl 1.1.1t & libssl-dev
运行环境构建
下文均通过
{path}
表示执行操作的目录。例如,/{path}/mysql-5.7.39
表示/home/username/mysql-5.7.39
。
更新并安装 Linux 基础软件
|
|
卸载 WSL2 自带的库
某些版本的 WSL2 会预装高版本的 CMake、GDB 等软件,因此首先需要执行以下命令完成卸载:
|
|
然后再进行后续的安装过程。
安装 openssl 1.1.1t & libssl-dev
第一个需要安装的是 openssl 库,因为其他组件的安装都会依赖它。
首先,在 WSL2 控制台中输入以下命令,以下载并解压 OpenSSL 的压缩文件:
|
|
--no-check-certificat
:不加这个参数可能会报证书校验失败,这是因为我们一开始卸载了预装的 openssl,所以这里需要跳过 https 证书校验。
然后进入解压后的源码目录,开始编译:
|
|
最后,创建以下软连接以方便程序的使用:
|
|
安装 CMake 3.21
首先,在 WSL2 控制台中输入以下命令,以下载并解压 CMake 的压缩文件:
|
|
然后进入解压后的源码目录,完成安装:
|
|
安装 gdb 11.1
首先,在 WSL2 控制台中输入以下命令,以下载并解压 gdb 的压缩文件:
|
|
然后进入解压后的源码目录,完成安装:
|
|
CLion 连接 WSL2
首先,需要在 Ubuntu 子系统中下载并解压 MySQL 源代码:
|
|
接着,下载并运行以下脚本,以部署可供 Clion 访问的 SFTP 服务器:
|
|
然后,在 Clion 中创建一个 CMake 空项目,注意选择版本为 C++11:
![创建一个 CMake 空工程](/blog/posts/how-to-compile-mysql-with-wsl2-and-clion/images/new-clion-proj.webp)
再然后,在 File | Settings | Build, Execution, Deployment | Deployment
设置中,配置连接:
![链接 SFTP](/blog/posts/how-to-compile-mysql-with-wsl2-and-clion/images/clion-sftp.webp)
并将工程目录映射到 WSL2 的文件系统:
![文件映射](/blog/posts/how-to-compile-mysql-with-wsl2-and-clion/images/clion-mapping.webp)
最后,在 Clion 中右键点击工程目录,选择 Depolyment | Download from...
从 WSL2 中下载 MySQL 源码:
![下载源码到 Windows](/blog/posts/how-to-compile-mysql-with-wsl2-and-clion/images/clion-download-from.webp)
到这里,准备工作就完成了,接下来正式编译 MySQL 源码。
配置 Toolchains 与 CMake
首先,我们需要在 File | Settings | Build, Execution, Deployment | Toolchains
设置中新增 WSL2 的编译工具链:
![toolchains](/blog/posts/how-to-compile-mysql-with-wsl2-and-clion/images/clion-toolchains.webp)
需要注意的是,这里使用的 Toolset、CMake 和 Debugger 工具,均是我们上文中安装的。如果这些工具安装失败,这里也会报错。
然后,在 File | Settings | Build, Execution, Deployment | CMake
设置中配置 CMake:
![cmake](/blog/posts/how-to-compile-mysql-with-wsl2-and-clion/images/clion-cmake.webp)
CMake options 中配置的参数如下:
|
|
{path}
为源码所在的绝对路径。
CMake 并编译工程
保存上述设置后,Clion 会自动 CMake 工程,如果后续需要重新编译,可以右键工程目录点击 “Reload CMake Project” 手动 CMake。
CMake 完成后,在 Clion 中选择 mysqld | Debug
进行构建:
![构建](/blog/posts/how-to-compile-mysql-with-wsl2-and-clion/images/clion-build.webp)
运行 mysqld
构建完成后,打开 MySqld 的 Configuration,在 Program arguments 中临时设置 --initialize-insecure
参数,点击 Run 完成数据库的初始化:
![mysqld](/blog/posts/how-to-compile-mysql-with-wsl2-and-clion/images/clion-config-mysqld.webp)
初始化完成后,删去 --initialize-insecure
参数,便可以正常运行 MySQL 服务了。
写在最后
通过 WSL2 编译 MySQL 源码的大致流程就是如此,不过你仍有可能在途中遇到跟我不一样的问题。例如 Clion 在配置 Toolchains 与 Cmake 这一步可能无法自动识别所有工具是否安装成功,此时就需要你根据自己的安装路径手动设置了。
之所以这么说是因为我在不同的电脑安装过多次(都是 windows 系统,且都是 wsl2),每次遇到的情况居然也不一样。不过这些问题都还算好解决,遇到了花点时间处理即可!