一、下载源码
首先去MySQL官网下载源代码mysql-boost-5.7.34.tar.gz
二、在docker中部署ubuntu
- 启动容器
docker run --name ubuntu-mysql -itd -p 3306:3306 -p 6789:22 ubuntu:bionic
docker cp E:/Document/mysql-boost-5.7.34.tar.gz f19aa84edf20:/home/workspace
docker exec -it ubuntu-mysql /bin/bash
- 安装依赖
apt install build-essential cmake -y
apt install openssl libssl-dev
apt install libncurses5-dev pkg-config
- 解压源码
tar -zxvf mysql-boost-5.7.34.tar.gz
cd mysql-5.7.34/
三、使用命令行编译源码
- 创建目录
mkdir -p cmake-build-debug/{data,etc}
cd cmake-build-debug
- 配置
cmake .. \
-B./build \
-DWITH_DEBUG=1 \
-DCMAKE_INSTALL_PREFIX=. \
-DMYSQL_DATADIR=./data \
-DSYSCONFDIR=./etc \
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_UNIX_ADDR=mysql-debug.sock \
-DWITH_BOOST=../boost \
-DDOWNLOAD_BOOST=1 \
-DDOWNLOAD_BOOST_TIMEOUT=60000
- 编译
cmake --build build --target mysqld -j 3
- -j 3 表示3个线程
- –build 表示构建build目录,此处与-B./build保持一致
- –target 指定只构建mysqld
四、使用vscode编译源码
- 首先要用vscode通过ssh远程连接到ubuntu,可以参考另一篇博文,然后安装好C/C++和CMake Tools两个插件。
- 创建配置文件 .vscode/settings.json
{
"cmake.buildBeforeRun": true,
"cmake.buildDirectory": "${workspaceFolder}/cmake-build-debug/build",
"cmake.configureSettings": {
"WITH_DEBUG": "1",
"CMAKE_INSTALL_PREFIX": "${workspaceFolder}/cmake-build-debug",
"MYSQL_DATADIR": "${workspaceFolder}/cmake-build-debug/data",
"SYSCONFDIR": "${workspaceFolder}/cmake-build-debug/etc",
"MYSQL_TCP_PORT": "3307",
"MYSQL_UNIX_ADDR": "${workspaceFolder}/cmake-build-debug/data/mysql-debug.sock",
"WITH_BOOST": "${workspaceFolder}/boost",
"DOWNLOAD_BOOST": "1",
"DOWNLOAD_BOOST_TIMEOUT": "600"
}
}
- 打开命令面板输入如下命令进行编译
- CMake: Configure
- CMake: Build Target -> mysqld EXECUTABLE
- 配置调试参数 .vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "cppdbg",
"request": "launch",
"name": "Debug mysqld",
"program": "${workspaceFolder}/cmake-build-debug/build/sql/mysqld",
"args": [
"--defaults-file=${workspaceFolder}/cmake-build-debug/etc/my.cnf"
],
"cwd": "${workspaceFolder}"
},
{
"type": "cppdbg",
"request": "launch",
"name": "Debug mysql",
"program": "${workspaceFolder}/cmake-build-debug/build/client/mysql",
"args": [
"-uroot",
"-P3307",
"-h127.0.0.1"
],
"cwd": "${workspaceFolder}"
}
]
}