zoukankan      html  css  js  c++  java
  • 32位win7+vs2008编译mysql 5.6.22源码并安装

    以下这部分安装说明是来自http://www.2cto.com/database/201407/316681.html的win7+vs2010源码编译mysql,文章最后会说明用vs2008编译遇见的一些问题以及源码安装mysql5.6.22

    最近由于在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制,目前萌生了要研究一下mysql数据库源码的想法。那么好吧,说干就干,首先我们需要实现对源码的编译,这里我们选择win7+VS2010来实现,但是试了很多次都失败了。这是我多次配置环境时遇到的问题,各种博客文章总是不太完全,或者说没有说明一些遇到的问题的解决方案,这可能跟具体的操作系统和环境有关。本文就说说我安装的情况。

    1. 准备工作

    (1)OS:win7 旗舰版 64位 + VS2010 (2013也试过了)

    (2)mysql 源码(windows版):mysql-5.6.19.zip (下来框选择source code)

    (3)perl tool:ActivePerl-5.16.3.1604-MSWin32-x64-298023.msi

    (4)Cmake:cmake-3.0.0-win32-x86 .exe

    (5)Bison:bison-2.4.1-setup.exe

    安装需要注意的几点,一般安装在根目录下,如C:Cmake C:GnuWin32 C:Perl64 ,当然也可以是其他目录,一般路径不要出现中文字符,空格及特殊字(这个貌似很重要)。具体安装见下面博客:Windows+VS2012环境下编译调试MySQL源码

    除了Bison安装需要注意意外,其他几乎都是默认安装,这些细节最好遵守,以免后续出错。Perl, Cmake, Bison安装完事之后,将他们安装目录下的bin所在路径加入环境变量中(windows环境变量添加),如C:Cmakein.好了至此基本ok。保险起见我们需要验证一下安装是否成功:

     

      

    2. 开始安装

    在任意你喜欢的盘里面创建一个用于安装的目录:如在D盘创建mysql然后将mysql-5.6.19.zip解压到该目录下,然后在cmd中切换到安装目录,此处即为D:mysqlmysql-5.6.19,记({install}=D:mysqlmysql-5.6.19),其下包含如下文件目录:

    然后在{install}下执行以下命令:

    >mkdir bld

    >cd bld

    >cmake ..

    这样你可看到类似如下的输出:

    有一些错误,目前也没有解决,但其实这并不影响我们生成VS下MySQL.sln 工程文件。事实上只要看到下面这个就可以了,各种not found也不要紧。如果采用Cmake 图形界面,其实也差不多了。这里不再赘述。

    下一步我们就可以在VS2010中build solution了(对应生成解决方案),但为了尽可能减少警告或错误,我们首先需要对下述文件进行修改:

    修改的方法很简单,就是将这些文件以UTF-8(带BOM头的)格式保存。一般使用Nodepad++工具等。

    最后一步就是找到{install}mysql-5.6.19sqlmysqld.cc中的test_lc_time_sz()函数,将其中的DBUG_ASSERT(0)改为DBUG_ASSERT(1)即可。

    至此我们就完成了将源码转换成VS中工程文件的目的。之后我们就可以build solution了。如果没有错误说明就已经没有问题了,一些小的警告可能是因为C++编译器比C编译器严格的缘故。下一步我们开始调试。

    3. 调试

    然后将mysqld工程的Debug的:属性->调试->命令参数,设为--console,如下:


    然后启动实例,

    这样就可以看到下面的命令行界面:

    cmd下进入到目录{install}client,然后执行如下命令,就可以开始连接到刚刚开启的mysql服务了。这说明mysql服务已经启动,下一步就是启动mysql客服端,这里我是采用命令行的启动方式。


    好了至此,我们基本完成了在win7下实现在vs下编译调试mysql数据库的目的,下面就可以开始研究源码了。

    4 .新增问题

    (1)vs2010:

    1
    2
    LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 [F:mysqlldCMakeFilesCMakeTmpcmTryCompileExec2556624813.vcxproj]
    解决办法:这是由于.NET中的cvtres.exe 与 VS2010中的有冲突,删掉VS2010中的cvtres.exe就可以了(目录F:InstallVS2010VCin),注意install是你安装VS2010的目录。

    为了更好地为后来者指明方向,也为了今后便于自己查询,故做了这个简单的指南。也希望按照这篇文档安装的朋友遇到任何问题可以一起探讨,然后不断完善该文档,以便后来者能够因此而受用,同时营造一个负责人写稿的氛围。

    win7+vs2008编译mysql5.6.22源码遇见的一些问题以及源码安装

    windows下源码mysql 5.6.22,在vs2008中编译的时候会出现错误:

    错误1:

    error C2027:使用了未定义类型"std::basic_ostream<_Elem,_Traits>"    

    解决办法为:在dict0mem.h头文件中添加#include <iostream>

    错误2:

    错误 460 error C2440: “初始化”: 无法从“std::_Tree<_Traits>::const_iterator”转换为“std::_Tree<_Traits>::iterator” d:MySqlmysql-5.6.22storageinnobasehandlerhandler0alter.cc 4399

    解决办法为:把被赋值的迭代器iterator改成const_iterator

    源码安装

    在mysql5.6.22源码的vs解决方案中有个INSTALL项目,生成这个项目就会默认在c:/program files路径中安装一个mysql。


  • 相关阅读:
    Python学习笔记 第四天
    Python学习笔记 第三天
    linux系统优化(CentOS7)
    ARMS踩坑合集
    zabbix报错合集(附解决方法)
    keepalived
    ansible
    nginx
    安装虚拟机
    linux发展、redhat与centos的区别
  • 原文地址:https://www.cnblogs.com/lisuyun/p/4269759.html
Copyright © 2011-2022 走看看