XP 下編譯MySQL (轉)


轉一(http://www.xianfen.net/Article137.aspxhtml

因工做須要,編譯MySQL,查找到MySQL官方的Windows下編譯MySQL的文檔,地址爲:http://forge.mysql.com/wiki/Building_MySQL_on_Windowsmysql

按照文檔知道一步一步操做便可。
 
一. 環境準備:
1. 獲取MySQL最新源碼:當前版本爲5.1.44:http://dev.mysql.com/downloads/mysql/ (Windows (x86, 32-bit), ZIP Archive),解壓到工做目錄,如C:\MySQL
2. 安裝VS2008,任何版本均可。若是是Express版本,須要再安裝Windows SDK, Server 2003 R2 Platform SDK下載地址爲:http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en
這裏用的是VS2008 Dev版本。
3. 安裝CMake(Windows版本),下載地址:http://www.cmake.org/cmake/resources/software.html, 舊版本可能不支持生成VS2008解決方案,推薦用最新版本。
注意:安裝路徑最好爲英文,而且不要有空格。安裝後將bin路徑添加到系統環境變量。
4. 安裝GNUWin32 Bison,下載地址爲:http://gnuwin32.sourceforge.net/packages/bison.htm, 一樣安裝路徑最好爲英文,而且不要有空格。安裝後將bin路徑添加到系統環境變量。
5. 安裝CygWin,下載地址爲:http://www.cygwin.com/setup.exe, 選擇模塊時要選上Perl and Python模塊。
注意:若是隻編譯,不作test,可不安裝CygWin. 
 
二. 編譯源代碼:
1. 源碼目錄中sql/sql_locale.cc文件包含各地本地化語言,默認用的UTF-8 without BOM編碼,編譯器不能正確識別,用含有編碼轉換功能的文本編輯器將其另存爲爲UTF-8編碼格式。
 
2. 控制檯進入MySQL根目錄,運行Win\configure.js腳本,腳本的參數爲:
WITH_INNOBASE_STORAGE_ENGINE         Enable particular storage engines
WITH_PARTITION_STORAGE_ENGINE
WITH_ARCHIVE_STORAGE_ENGINE
WITH_BLACKHOLE_STORAGE_ENGINE
WITH_EXAMPLE_STORAGE_ENGINE
WITH_FEDERATED_STORAGE_ENGINE
__NT__                             Enable named pipe support
MYSQL_SERVER_SUFFIX=<suffix>        Server suffix, default none
COMPILATION_COMMENT=<comment>  Server comment, default "Source distribution"
MYSQL_TCP_PORT=<port>             Server port, default 3306
CYBOZU                            Default character set is UTF8
EMBED_MANIFESTS                  Embed custom manifests into final exes, otherwise VS
 default will be used. (Note - This option should only be
 used by MySQL AB.)
WITH_EMBEDDED_SERVER            Configure solution to produce libmysqld.dll
 and the static mysqlserver.lib 
 
所以,該命令行能夠是以下所示。
Cscript win\configure.js WITH_INNOBASE_STORAGE_ENGINE WITH_PARTITION_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-pro
運行結果應該與以下結果相似:
Microsoft (R) Windows Script Host Version X.X
Copyright (C) Microsoft Corporation XXXX-XXXX. All rights reserved.
 
done!
 
3. 建立VS解決方案,在MySQL源文件Win目錄下有一些批處理:
build-vs71.bat VS2003
build-vs8.bat VS2005
build-vs8_x64.bat VS2005,編譯出64bit MySQL
build-vs9.bat VS2008
build-vs9_x64.bat VS2008,編譯出64bit MySQL
這些批處理內調用的是CMake,能夠在命令行敲入CMake,查看CMake支持的VS版本。
這裏咱們用VS2008,目標運行平臺爲32bit,因此運行Win\build-vs9.bat。
運行後,在MySQL根目錄生成了MySql.sln,用VS2008打開,能夠看到有56個項目。
 
4. 編譯:選擇編譯模式(如Release),而後編譯。編譯過程當中會生成數千個警告,都是源文件編碼引發的(也有多是個人Windows當前區域選項爲中國引發的),可忽略。
若是編譯過程當中提示error PRJ0019: A tool returned an error code from "Generating sql_yacc.h, sql_yacc.cc」, 基本是GNUWin32 Bison路徑中有空格引發的。從output窗口能夠看到詳細的出錯信息。
 
三. 測試、部署:
[這一步須要CygWin]在CygWin下,進入MySQL源文件的mysql-test目錄能夠執行箇中test。如:$./mysql-test-run.pl --manual-debug alter_table等。
 
部署:按照下載的MySQL zip安裝包組織好目錄結構:
 
1. 準備my.ini文件:
新建一個my.ini文件,內容爲:
[mysqld]
# MySQL目錄
basedir=C:/mysql
# MySQL數據庫存放的目錄
datadir=C:/mysql/data
放Windows目錄下。
 
2. 安裝、啓動MySQL服務。
mysqld install mysql
net start mysql
 

3. 運行MySQL目錄下的bin\Mysql.exe,便可執行命令或查詢語句。sql


轉二(http://www.cnblogs.com/yuemenglong/archive/2011/06/14/2080262.html數據庫

今天擺弄了半天,終於把mysql在windows上編譯經過了,特別記錄下來,分享給你們。windows

我下載的是mysql-5.5.13,下載後,打開根目錄下面的INSTALL-WIN-SOURCE文件,裏面讓我訪問網址:編輯器

http://dev.mysql.com/doc/refman/5.1/en/windows-source-build.html,按照上面的作。sqlserver

我就按照網頁上說的來,發現怎麼搞也搞不定,一開始有一步:測試

cmake win/configure.js –XXX,怎麼也過不去,後來發現,就沒有win/configure.js這個文件,在看上面的網址,其實說的是mysql-5.1.xx版的方法,我去,居然壓縮包裏的文檔沒有更新,後來在網上找了找,發現了5.5.xx版的文檔,就按照這個文檔來唄。ui

先下載cmake和bison的windows版本,cmake直接雙擊安裝,一路next,中間有一步能夠選擇添加到環境變量裏面, bison的話默認安裝目錄在program files下面,這個要改掉,改爲中間一個沒有括號的路徑,我直接安裝到C盤下面了,就是C:/GnuWin32,而後將C:/GnuWin32/bin添加到環境變量裏。編碼

而後進入mysql的根目錄下,輸入cmake . -G "Visual Studio 9 2008",正常的話會有XXX done什麼的。

成功的話會有MySQL.sln和一大堆.vcproj文件,打開MySQL.sln,就能夠看到整個解決方案了,在編譯以前,建議打開sql/sql_locale.cc文件,將其用utf-8格式再保存一遍,否則編譯過程中會有大量錯誤。而後就能夠生成解決方案了,不過我在生成過程中會總是冒出來連接器中止工做什麼什麼的,最後編完了連接出了大量問題,會出現fatal error LNK1000: Internal error during IncrBuildImage這種錯誤,我出現了23個,什麼都沒改,又編了一遍,========== 生成: 成功26 個,失敗0 個,最新62 個,跳過10 個==========,貌似沒有錯誤了,不知道編譯器是怎麼搞的。

除了用sln編譯外,也能夠用命令行編譯,根據文檔,編譯命令爲:

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" MySQL.sln /build RelWithDebInfo,

編譯安裝文件的命令爲:

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" MySQL.sln /build RelWithDebInfo /project initial_database

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" MySQL.sln /build RelWithDebInfo /project package

若是沒有任何問題,根據文檔,這個命令會在根目錄下生成mysql-5.5.13-win32.zip這個文件。

清理的命令爲

"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" MySQL.sln /clean

Del CMakeCache.txt

若是用sln生成的過程中initial_database這個項目有錯誤的話,個人解決方法是把sql/locale.cc下的my_locales結構體下的除了第一個&my_locale_en_US,和最後一NULL以外其餘的值所有刪掉(或註釋掉),我這麼幹了貌似沒有什麼反作用,主要在於漢字和日文這些好像識別起來有點問題。

若是可以在根目錄下生成zip文件,證實整個操做沒有問題,zip裏的bin文件夾裏是最全的程序包,調試的話能夠執行裏面的mysqld-debug.exe,用下面的參數:

mysqld-debug --debug –-standalone。

會出現帶有窗口的mysql,正常狀況下是沒有的,只能用服務方式啓動。

這下能夠經過vs附加到進程的方式調試了,計劃下一次寫一下怎麼在windows下調試mysql的。

相關文章
相關標籤/搜索