cari
Rumahpangkalan datatutorial mysqlWin7+VS2010:mysql 源码编译与调试_MySQL

win7

win7+vs2010 源码编译 mysql

最近由于在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制,目前萌生了要研究一下 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:/Cmake/bin. 好了至此基本 ok.

保险起见我们需要验证一下安装是否成功:

2. 开始安装

在任意你喜欢的盘里面创建一个用于安装的目录:如在 D 盘创建 mysql 然后将 mysql-5.6.19.zip 解压到该目录下,然后在 cmd 中切换到安装目录,此处即为 D:/mysql/mysql-5.6.19 ,记( {install}= D:/mysql/mysql-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.19/sql/ mysqld.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 数据库的目的,下面就可以开始研究源码了。

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

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Kurangkan penggunaan memori MySQL di DockerKurangkan penggunaan memori MySQL di DockerMar 04, 2025 pm 03:52 PM

Artikel ini meneroka mengoptimumkan penggunaan memori MySQL di Docker. Ia membincangkan teknik pemantauan (statistik Docker, skema prestasi, alat luaran) dan strategi konfigurasi. Ini termasuk had memori docker, swapping, dan cgroups, bersama -sama

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersamaCara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersamaMar 04, 2025 pm 04:01 PM

Artikel ini menangani ralat "tidak dapat membuka perpustakaan kongsi" MySQL. Isu ini berpunca daripada ketidakupayaan MySQL untuk mencari perpustakaan bersama yang diperlukan (.so/.dll fail). Penyelesaian melibatkan mengesahkan pemasangan perpustakaan melalui pakej sistem m

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?Mar 19, 2025 pm 03:51 PM

Artikel ini membincangkan menggunakan pernyataan jadual Alter MySQL untuk mengubah suai jadual, termasuk menambah/menjatuhkan lajur, menamakan semula jadual/lajur, dan menukar jenis data lajur.

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)Mar 04, 2025 pm 03:54 PM

Artikel ini membandingkan memasang MySQL pada Linux secara langsung berbanding menggunakan bekas podman, dengan/tanpa phpmyadmin. Ia memperincikan langkah pemasangan untuk setiap kaedah, menekankan kelebihan Podman secara berasingan, mudah alih, dan kebolehulangan, tetapi juga

Apa itu SQLite? Gambaran Keseluruhan KomprehensifApa itu SQLite? Gambaran Keseluruhan KomprehensifMar 04, 2025 pm 03:55 PM

Artikel ini memberikan gambaran menyeluruh tentang SQLite, pangkalan data relasi tanpa server tanpa mandiri. Ia memperincikan kelebihan SQLITE (kesederhanaan, mudah alih, kemudahan penggunaan) dan kekurangan (batasan konkurensi, cabaran skalabiliti). C

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?Mar 18, 2025 pm 12:01 PM

Artikel membincangkan mengkonfigurasi penyulitan SSL/TLS untuk MySQL, termasuk penjanaan sijil dan pengesahan. Isu utama menggunakan implikasi keselamatan sijil yang ditandatangani sendiri. [Kira-kira aksara: 159]

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi LangkahMenjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi LangkahMar 04, 2025 pm 03:49 PM

Panduan ini menunjukkan pemasangan dan menguruskan pelbagai versi MySQL pada macOS menggunakan homebrew. Ia menekankan menggunakan homebrew untuk mengasingkan pemasangan, mencegah konflik. Pemasangan Butiran Artikel, Permulaan/Perhentian Perkhidmatan, dan PRA Terbaik

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)?Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)?Mar 21, 2025 pm 06:28 PM

Artikel membincangkan alat MySQL GUI yang popular seperti MySQL Workbench dan PHPMyAdmin, membandingkan ciri dan kesesuaian mereka untuk pemula dan pengguna maju. [159 aksara]

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Persekitaran pembangunan bersepadu PHP yang berkuasa