编译调试mysql
【参考】
https://cloud.tencent.com/developer/article/1799089
centos7.9
mysql8.0.22
gcc编译大概5个小时
【解决环境问题】
1)修改这几处代码
2)替换libstdc++.so.6.0.28
strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
find / -name "libstdc++.so*"
cp /home/mysql/gcc-10.2.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.28 /usr/lib64/
cd /usr/lib64/
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.28 libstdc++.so.6
【编译参数】
cmake . \ -DCMAKE_INSTALL_PREFIX=/install/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DFORCE_INSOURCE_BUILD=1 \ -DCMAKE_CXX_COMPILER=/usr/bin/g++ \ -DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_unicode_ci \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLED_PROFILING=1 \ -DMYSQL_TCP_PORT=3306 \ -DCMAKE_BUILD_TYPE=Debug \ -DWITH_DEBUG=1 \ -DDOWNLOAD_BOOST=0 \ -DWITH_BOOST=/install/mysql-8.0.22/boost \ -DFORCE_INSOURCE_BUILD=1 \ -DCMAKE_CXX_FLAGS_DEBUG="-O0 -g3 -gdwarf-2"
-O0 -g3 -gdwarf-2解决可以看宏和编译优化的问题
优化前
optimized,而且函数跳转有点乱
优化后
【cmake配置】
1)参数详见CMakeLists.txt
2)make VERBOSE=1调试
3)日志/install/mysql-8.0.22/CMakeFiles
CMakeError.log和CMakeOutput.log