OS: Windows XP sp3

IDE: VS2010

MariaDB: V5.5

(到目前为止2016.5,中文域(.cn)只有清华大学 TUNA 镜像源可用)

(.tar.gz为源码;.zip为执行程序)

Source: https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-5.5.49/source/mariadb-5.5.49.tar.gz

Zip: https://mirrors.tuna.tsinghua.edu.cn/mariadb//mariadb-5.5.49/win32-packages/mariadb-5.5.49-win32.zip

首先安装如下工具和Boost库:

(1) Bazzar

https://launchpad.net/bzr/2.5/2.5.1/+download/bzr-2.5.1-1-setup.exe

(2) Bison from GnuWin32

http://jaist.dl.sourceforge.net/project/gnuwin32/bison/2.4.1/bison-2.4.1-setup.exe

(3) Cmake

https://cmake.org/files/v3.4/cmake-3.4.3-win32-x86.exe

V3.4.3是可以在XP中运行的。

Boost库:

(1) 下载

http://www.boost.org/users/download/

当前最新版本为V1.61.0

(2) 设置系统变量

a. BOOST_HOME

C:\boost_1_61_0

b. 增加变量到path

然后执行编译:

检查系统变量path,以保证包含如下设置:

C:\Program Files\Bazaar;C:\GnuWin32\bin;C:\boost_1_61_0;C:\Program Files\CMake\bin

(1)cmake ..

Microsoft Windows XP [版本 ]
(C) 版权所有 - Microsoft Corp.

C:\Documents and Settings\Administrator>d:

D:\>cd mariadb-

D:\mariadb->mkdir bld

D:\mariadb->cd bld

D:\mariadb-\bld>cmake ..
-- Building
-- Running cmake version
-- The C compiler identification is MSVC 16.0.40219.1
-- The CXX compiler identification is MSVC 16.0.40219.1
-- Check
-- Check   -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check
-- Check   -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for isnan
-- Looking for isnan - not found
-- Looking for snprintf
-- Looking for snprintf - not found
-- Looking for _snprintf
-- Looking for _snprintf - found
-- MariaDB
-- Check size of void *
-- Check size of void * - done
-- Packaging as: mariadb--win32
-- Looking for pthread.h
-- Looking for pthread.h - not found
-- Found Threads: TRUE
-- Looking for isnan
-- Looking for isnan - not found
-- Check size of time_t
-- Check size of time_t - done
-- Performing Test STRUCT_TIMESPEC_HAS_TV_SEC
-- Performing Test STRUCT_TIMESPEC_HAS_TV_SEC - Failed
-- Performing Test STRUCT_TIMESPEC_HAS_TV_NSEC
-- Performing Test STRUCT_TIMESPEC_HAS_TV_NSEC - Failed
-- Looking for malloc_stats_print in jemalloc
-- Looking for malloc_stats_print in jemalloc - not found
-- Performing Test HAVE_WVLA
-- Performing Test HAVE_WVLA - Failed
-- Performing Test HAVE_WERROR
-- Performing Test HAVE_WERROR - Failed
-- Boost version:
-- Performing Test HAVE_XUCRED
-- Performing Test HAVE_XUCRED - Failed
-- Looking for MFC
-- Looking for MFC - found
-- Configuring done
-- Generating done
-- Build files have been written to: D:/mariadb-/bld

D:\mariadb-\bld>

(2) sql/sql_locale.cc

使用UE打开此文件并另存为同名。不同之处在于,更改“Format”!

(3) 生成

cmake --build . --config Relwithdebinfo

最后,拷贝文件。

拷贝以下两个文件覆盖到D:\progFiles\MariaDB55\bin,以替换不能在XP运行的程序。

bld\sql\RelWithDebInfo\mysqld.exe

bld\sql\RelWithDebInfo\mysqld.pdb

FAQ:

1. error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE'

在进行storage\oqgraph目录编译时发生错误。

编译日志:file:///D:/mariadb-5.5.49/bld/storage/oqgraph/oqgraph.dir/RelWithDebInfo/BuildLog.htm

Build Log

Build started: Project: oqgraph, Configuration: RelWithDebInfo|Win32

Command Lines

Creating temporary file "d:\mariadb-5.5.49\bld\storage\oqgraph\oqgraph.dir\RelWithDebInfo\RSP00015042369588.rsp" with contents
[
/O2 /Ob1 /I "C:\boost_1_61_0" /I "D:\mariadb-5.5.49\bld\include" /I "D:\mariadb-5.5.49\include" /I "D:\mariadb-5.5.49\sql" /I "D:\mariadb-5.5.49\regex" /I "D:\mariadb-5.5.49\extra\yassl\include" /I "D:\mariadb-5.5.49\extra\yassl\taocrypt\include" /I "D:\mariadb-5.5.49\zlib" /D "WIN32" /D "_WINDOWS" /D "NDEBUG" /D "DBUG_OFF" /D "MYSQL_DYNAMIC_PLUGIN" /D "__WIN__" /D "_CRT_SECURE_NO_DEPRECATE" /D "_WIN32_WINNT=0x0501" /D "NOMINMAX" /D "WIN32_LEAN_AND_MEAN" /D "HAVE_CONFIG_H" /D "HAVE_OQGRAPH" /D "CMAKE_INTDIR=\"RelWithDebInfo\"" /D "oqgraph_EXPORTS" /D "_WINDLL" /D "_MBCS" /FD /EHsc /MT /Fo"oqgraph.dir\RelWithDebInfo\\" /Fd"oqgraph.dir\RelWithDebInfo\vc90.pdb" /W3 /c /Z7 /TP /wd4800 /wd4805 /wd4996 /wd4291   /MP /we4099

"..\..\..\storage\oqgraph\graphcore.cc"

"..\..\..\storage\oqgraph\ha_oqgraph.cc"
]
Creating command line \bld\storage\oqgraph\oqgraph.dir\RelWithDebInfo\RSP00015042369588.rsp" /nologo /errorReport:queue"
Output Window

Compiling...
graphcore.cc
ha_oqgraph.cc
C:\boost_1_61_0\boost/type_traits/detail/common_arithmetic_type.hpp : warning C4819: The ). Save the file in Unicode format to prevent data loss
C:\boost_1_61_0\boost/graph/named_graph.hpp() : error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE'
        with
        [
            x=false
        ]
        C:\boost_1_61_0\boost/graph/detail/adjacency_list.hpp() : see reference to function template instantiation 'void boost::graph::named_graph::removing_vertex(Vertex,VertexIterStability)' being compiled
        with
        [
            Graph=boost::adjacency_list,
            Vertex=unsigned int,
            VertexProperty=open_query::VertexInfo,
            VertexIterStability=boost::graph_detail::unstable_tag
        ]
        ..\..\..\storage\oqgraph\graphcore.) : see reference to function template instantiation 'void boost::remove_vertex::config,boost::bidirectional_graph_helper_with_property>(unsigned int,boost::vec_adj_list_impl &)' being compiled
        with
        [
            Graph=boost::adjacency_list,
            VertexListS=boost::vecS,
            OutEdgeListS=boost::vecS,
            DirectedS=boost::bidirectionalS,
            VertexProperty=open_query::VertexInfo,
            EdgeProperty=open_query::EdgeInfo,
            GraphProperty=boost::no_property,
            EdgeListS=boost::listS,
            Config=boost::detail::adj_list_gen,boost::vecS,boost::vecS,boost::bidirectionalS,open_query::VertexInfo,open_query::EdgeInfo,boost::no_property,boost::listS>::config,
            Base=boost::bidirectional_graph_helper_with_property,boost::vecS,boost::vecS,boost::bidirectionalS,open_query::VertexInfo,open_query::EdgeInfo,boost::no_property,boost::listS>::config>
        ]
Results

Build log was saved at "file://d:\mariadb-5.5.49\bld\storage\oqgraph\oqgraph.dir\RelWithDebInfo\BuildLog.htm"
oqgraph -  error(s),  warning(s)

Build Log

解决办法:

注释掉named_graph.hpp(C:\boost_1_61_0\boost\graph)的314行代码。

参考文档:

1. Building MariaDB on Windows

https://mariadb.com/kb/en/mariadb/Building_MariaDB_on_Windows/

2. 关于mysqld不是有效的win32程序

http://www.cnblogs.com/xiaobin-hlj80/p/5500152.html

3. 安装boost库(Windows)

http://www.cnblogs.com/xiaobin-hlj80/p/5503842.html

在windows编译MariaDB的更多相关文章

  1. OGRE 2.1 Windows 编译

    版权所有,转载请注明链接 OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE ...

  2. Windows编译ejabberd

    Windows编译ejabberd(金庆的专栏)安装 erlang OTP. 添加路径到 PATH, 使 erl 可以运行.git clone ejabberd安装 rebar:git clone g ...

  3. 【转载】OGRE 2.1 Windows 编译

    OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE: OGRE官方推出了最新 ...

  4. CEF3.2623使用记录:windows编译

    CEF3.2623使用记录:windows编译 1:cef3.2623下载地址 2623是cef3最后一个支持xp系统的版本,且可以支持html的audio标签,可以用作对html音频的处理下载地址为 ...

  5. Windows 编译安装 nginx 服务器 + rtmp 模块

    有关博客: <Windows 编译安装 nginx 服务器 + rtmp 模块>.<Ubuntu 编译安装 nginx>.<Arm-Linux 移植 Nginx> ...

  6. php beast windows编译教程

    git clone https://github.com/Microsoft/php-sdk-binary-tools.git c:\php-sdk cd c:\php-sdk git checkou ...

  7. Windows编译Nginx源码

    Windows下的Nginx战役,人不作就不会死!就像是拿着麦当劳的优惠券去买肯德基一样,别扭啊 Nginx是一款轻量级的Web 服务器.反向代理服务器.邮件服务器等等集一大串荣誉于一身的大牌人物!他 ...

  8. Windows编译安装OpenSSL

    windows下使用vs2008中的nmake编译安装openssl的脚本build.bat: echo off & color 0A :: 项目名称 set PROJECT=openssl ...

  9. 专题:Windows编译x264、SDL、faac、ffmpeg过程

    Windows上编译ffmpeg完整过程,包括编译x264.SDL.faac.在Windows上编译ffmpeg需要用MinGW+msys,本专题用于记录编译过程中遇到的各种问题及解决方法,转载请注明 ...

随机推荐

  1. event.stopPropagation()与event.preventDefault()

    <div id='div0'> <div id='div1'> <a href="#" id='div2'>2222</a> < ...

  2. C++的深拷贝与浅拷贝

    对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量.下面是一个类对象拷贝的简单例子. #i ...

  3. FTP上传-封装工具类

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  4. Xcode LLDB Debug教程

    开胃小菜--简单的断点调试 在xcode中打开一个app,在想要break的行号上单击,即可生成一个深色的箭头标识--断点.如下图,在viewDidLoad:中设置了断点. 运行app,等待...就可 ...

  5. python3验证码机器学习

    python3验证码机器学习 文档结构为 -- iconset -- ... -- jpg -- captcha.gif -- py -- crack.py 需要的库 pip3 install pil ...

  6. Jquery 防止页面刷新

    1.禁止鼠标右键功能$(document).ready(function() { $(document).bind("contextmenu",function(e) { aler ...

  7. 如何通过SerialPort读取和写入设备COM端口数据

    SerialPort类用于控制串行端口文件资源.提供同步 I/O 和事件驱动的 I/O.对管脚和中断状态的访问以及对串行驱动程序属性的访问.另外,SerialPort的功能可以包装在内部 Stream ...

  8. mybatis实战教程(mybatis in action)之四:实现关联数据的查询

    有了前面几章的基础,对一些简单的应用是可以处理的,但在实际项目中,经常是关联表的查询,比如最常见到的多对一,一对多等.这些查询是如何处理的呢,这一讲就讲这个问题.我们首先创建一个Article 这个表 ...

  9. C#程序以管理员身份运行

    选中"Security",在界面中勾选"Enable ClickOnce Security Settings"后,在Properties下就有自动生成app.m ...

  10. Discrete.Differential.Geometry-An.Applied.Introduction(sig2013) 笔记

    The author has a course on web: http://brickisland.net/DDGSpring2016/ It has more reading assignment ...