热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL代码如何在Windows环境下编译_MySQL

写这篇文章的目的只是告诉朋友们如何编译MySQL代码,或许有些人觉得从Windows平台编译MySQL的代码有些复杂,其实不然。如果您对本文中所提到的知识有任何疑问可以透过CSDN的MySQL板或者MySQL@CHINA支援论坛寻求帮助。这篇文章中所提到的东西没有任何的创新性,只是对My

写这篇文章的目的只是告诉朋友们如何编译MySQL代码,或许有些人觉得从Windows平台编译MySQL的代码有些复杂,其实不然。如果您对本文中所提到的知识有任何疑问可以透过CSDN的MySQL板或者MySQL@CHINA支援论坛寻求帮助。这篇文章中所提到的东西没有任何的创新性,只是对MySQL已有文档的总结。

一、为什么要编译代码

我不知道阅读这篇文章的朋友你是否会注意MySQL手册。MySQL在线手册近期呈现一种“超越”趋势,手册中所描述的内容很大部分都是开发版本中才能找到的,我希望自己在阅读的同时获得试验的机会。同时,我也和其他朋友一样痛恨软件中存在各种BUG,所以我要自己编译代码。当然,最开始我的初衷是希望借助Intel C++重新编译MySQL的代码获取更好的性能。

二、编译代码要如何准备

这一部分包含下列要点,请务必注意。

■ 编译器

■ Cygwin

■ 内存

■ 耐心

编译器,编译MySQL代码可以使用Cygwin下的GCC以及VC6.0,VC7.1。如果您使用Intel C++的话,我建议您配合VC6.0使用。不推荐使用VC 7.0的原因是其本身所存在的BUG(已经修复,但不公开提供),如果不装补丁的话那么会造成错误(关于inline优化可以暂时解决)。VC6.0请安装SP4或SP5以及对应的处理器支持补丁包。

Cygwin,MySQL的代码绝大部分是在Linux编写,所以很多实用工具以及配置脚本都是*nix风格,因此我们需要借助Cygwin这一 Unix 模拟环境。安装时请选择上 autoconf automake gnu make libtool bison perl。另外一点,MySQL的开发使用bk进行管理,而bk的客户端也需要借助cygwin运行。如果只想编译官方发布的Windows代码,那么可以不去关心这些。

内存,编译MySQL代码非常消耗时间,至少我是这么觉得。我建议有一个足够大内存的机器,否则会让你有种生不如死的感觉。

耐心,第一次编译MySQL尤其是开发中的代码难免会遇到各种各样的麻烦,尝试去克服它们。没有人第一次就应该成功,假设连这些小问题都无法解决那么谈何阅读代码?所以,多少给自己点信心,也多少有些耐心。

三、获取资源

除了编译器、cygwin之外我们还需要准备bk的客户端,可以下载回来。当准备妥当工具后我们访问 mysql.bkbits.net ,在这里我们可以看到一个表格。这里的表格每一项目都对应着一个mysql的项目,我们关心的是名为 mysql-4.1的项目,这是目前的主要工作重点 MySQL 4.1.x 版本的开发树。

获取代码:

shell> bk clone bk://mysql.bkbits.net/mysql-4.1 mysql-4.1

更新代码:

shell> bk pull bk://mysql.bkbits.net/mysql-4.1 mysql-4.1

通过上边两个命令,我们就可以得到并随时同步开发中的MySQL4.1.x代码,第一次下载的话整个过程很慢大约有100多M的东西需要下载,然后还要解压缩然后合成代码。mysql.bkbits.net 列出的其他项目分别是:

我们都可以使用同样的方式获取并随时同步代码。

四、产生Windows代码

默认下载回来的代码并不适合直接就用,把代码copy到另外的目录,然后使用BUILD目录下的实用工具 compile-pentium-max 配置代码,配置完成后使用 scripts 目录下的实用工具make_win_src_distribution 产生一个适合Windows使用的代码,这种方式得到的代码如同官方下载所提供的代码,最终成品是一个tar打包。执行这些实用工具,也就是shell 脚本需要在代码树的顶级目录。

五、编译代码

当完成了上述工作之后编译代码应该是最为轻松的,直接用VC 6.0或者VC.NET 2003打开工程文件编译就可以了。整个过程中并不需要其他的类库进行辅助,也什么难点。

最后,祝福各位好运。另外也是最重要的。通过本文所述方式获得的MySQL代码遵循GPL协议,关于GPL的详细信息请自行查阅。


推荐阅读
  • PHP组合工具以及开发所需的工具
    本文介绍了PHP开发中常用的组合工具和开发所需的工具。对于数据分析软件,包括Excel、hihidata、SPSS、SAS、MARLAB、Eview以及各种BI与报表工具等。同时还介绍了PHP开发所需的PHP MySQL Apache集成环境,包括推荐的AppServ等版本。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 腾讯安全平台部招聘安全工程师和数据分析工程师
    腾讯安全平台部正在招聘安全工程师和数据分析工程师。安全工程师负责安全问题和安全事件的跟踪和分析,提供安全测试技术支持;数据分析工程师负责安全产品相关系统数据统计和分析挖掘,通过用户行为数据建模为业务决策提供参考。招聘要求包括熟悉渗透测试和常见安全工具原理,精通Web漏洞,熟练使用多门编程语言等。有相关工作经验和在安全站点发表作品的候选人优先考虑。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • php课程Json格式规范需要注意的小细节
    JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgramming ... [详细]
author-avatar
阁下贵姓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有