闲来无事,准备学习下mysql的源代码,花了1个小时的时间,终于在VS2008中运行起来Mysql了,有些地方也是知之甚少,理解错了希望大家及时纠正,下面介绍下如何进行配置。
step 1:
Step 2:
别告诉我你没有VS,呃,好吧,你是外星人。
Step 3:
Step4:
Step 5:
将下载下来的ZIP文件解压,我解压到了D:\open_src\mysql 中,CMD进入mysql目录下,执行脚本文件:
脚本后面带有三个参数,具体的参数根据自己的需要进行设置,这里选择了INNODB的存储引擎,
貌似这个很流行,提供的可选参数如下:
打开configure.js脚本文件,如下所示:
try
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments
// read in the Unix configure.in file/**<p>打开文件mysql/configure.ini ,此文件是一些默认配置值,
如端口号MYSQL_TCP_PORT_DEFAULT</p>*/
var configureInTS = fso.OpenTextFile("configure.in", ForReading);
var configureIn = configureInTS.ReadAll();
configureInTS.Close();
var default_comment = "Source distribution";
var default_port = GetValue(configureIn, "MYSQL_TCP_PORT_DEFAULT");
var actual_port = 0;
/**<p>输出文件mysql/win/configure.data ,此文件是运行js脚本产生的一些参数</p>*/
var configfile = fso.CreateTextFile("win\\configure.data", true);
for (i=0; i < args.Count(); i++)
{
var parts = args.Item(i).split('=');
switch (parts[0])
{
case "CYBOZU":
case "EMBED_MANIFESTS":
case "EXTRA_DEBUG":
case "WITH_EMBEDDED_SERVER":
case "WITHOUT_MARIA_TEMP_TABLES":
configfile.WriteLine("SET (" + args.Item(i) + " TRUE)");
break;
case "MYSQL_SERVER_SUFFIX":
case "MYSQLD_EXE_SUFFIX":
configfile.WriteLine("SET (" + parts[0] + " \""
+ parts[1] + "\")");
break;
case "COMPILATION_COMMENT":
default_comment = parts[1];
break;
case "MYSQL_TCP_PORT":
actual_port = parts[1];
break;
}
}.....
.....
由此可见configure.js是利用我们传入的参数和configure.in文件,生成一个configure.data文件,其内容如下所示:
Step 6:
执行win目录下的build-vs9.bat批处理文件,打开这个文件,只有一条语句:
cmake -G "Visual Studio 9 2008"
cmake是一个跨平台的自动化构建系统,即根据平台和编译器生成不同的make文件(UNIX下的叫法)。
build-vs9.bat中CMAKE的参数是Visual Studio 9 2008,即Generates Visual Studio 9 2008 project files。Cmake执行时,会使用step 5中生成的configure.data文件,具体咋使用的我也小白了,咱就不研究了。最后会在mysql根目录下生成一个VS的解决方案文件MySql.sln。
Step 7:
设置数据目录,Mysqld启动时,首先去WINDIR中找my.ini配置文件,可以通过如下命令获取WINDIR的路径:
如果没有my.ini文件,可以自己创建一个,看到如下内容:
设置了两个参数,mysql的参数路径,我们通过修改这两个参数来指向我们具体的目录。
如果不想自己创建的话,可以将win目录下的data目录整体拷贝到sql目录下。
step 8:
将sql目录下的share目录整体拷贝下mysql根目录下,因为SERVER启动时需要在Mysql/share目录下找一个errmsg.txt,用于记录错误信息,当然你也可以不进行整体的目录拷贝,只将errmsg.txt拷贝过去也行,但是确保是这样的路径mysql/share/errmsg.txt.
step 9:
启动mysql服务器,mysql解决方案中,服务器是mysqld项目,客户端是mysql项目,分别编译这两个项目。在编译sql_locale.cc文件时,会出现ERROR,用ULTRA EDIT打开sql_locale.cc文件,另存为UTF-8格式,覆盖原文件即可。使用VS启动服务器mysqld,使用命令行启动客户端mysql:
服务器可以在VS下进行调试了,yeah~~
- 海报