cygwin编译运行mysql记录

本文介绍如何使用Cygwin环境编译安装MySQL 5.1,包括所需工具的安装配置、源码包下载、编译过程中的错误处理及最终的服务启动验证。

转自http://www13.atwiki.jp/uhaku/pages/51.html

稍微改动了一下,编译运行mysql5.1代码

 

1. 安装cygwin和ncurses的库
http://www.cygwin.com/setup.exe
Install from Internet
设置目录和缓冲目录后next下去
Select Packages搜索并安装下列包:make,gcc和ncurses(依赖的会自动选中)
make: The GNU version of the 'make' utility
gcc: C compiler upgrade helper
gcc-core: C compiler
gcc-g++: C++ compiler
libncurses-devel: (devel) libraries for terminal handling

 

2. 下载mysql5.1的tar源码包
http://dev.mysql.com/downloads/mysql/
选择source code
mysql-5.1.50.tar.gz

 

3. 编译安装mysql
$ make -v
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i686-pc-cygwin
$ gcc -v
Reading specs from /usr/lib/gcc/i686-pc-cygwin/3.4.4/specs
Configured with: /managed/gcc-build/final-v3-bootstrap/gcc-3.4.4-999/configure -
-verbose --program-suffix=-3 --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc
--libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/s
hare/info --enable-languages=c,ada,c++,d,f77,pascal,java,objc --enable-nls --wit
hout-included-gettext --enable-version-specific-runtime-libs --without-x --enabl
e-libgcj --disable-java-awt --with-system-zlib --enable-interpreter --disable-li
bgcj-debug --enable-threads=posix --enable-java-gc=boehm --disable-win32-registr
y --enable-sjlj-exceptions --enable-hash-synchronization --enable-libstdcxx-debu
g
Thread model: posix
gcc version 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
$ cd /usr/src
$ explorer .
(拷贝mysql-5.1.50.tar.gz进去C:\cygwin\usr\src)
$ tar zxvf mysql-5.1.50.tar.gz
$ cd mysql-5.1.50
(下面步骤参考自http://www13.atwiki.jp/uhaku/pages/51.html
$ CFLAGS="-O3 -march=i686" \
CXXFLAGS="-O3 -march=i686 -felide-constructors \
-fno-exceptions -fno-rtti" \
./configure \
--with-innodb \
--enable-local-infile \
--prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
-with-extra-charsets=all \
--with-unix-socket-path=/tmp/mysql.sock
(建议关闭360等杀毒软件,防止一些不必要的麻烦)
(如果configure过程出现cpu持续不降而无法前进,
可以在任务管理器中关闭有问题的gcc-3.exe进程)
$ make
(出现第一个错误:
readline/readline.h:70:29: sys/ttydefaults.h: No such file or directory
用notepad2或者写字板打开
C:\cygwin\usr\src\mysql-5.1.50\cmd-line-utils\libedit\readline\readline.h
把#include <sys/ttydefaults.h>注释掉
)
(出现第二个错误:
vi.c:918:74: macro "__weak_reference" requires 2 arguments, but only 1 given
参考http://www.cygwin.com/ml/cygwin/2010-01/msg01124.html的补丁
用notepad2或者写字板打开
C:\cygwin\usr\src\mysql-5.1.50\cmd-line-utils\libedit\vi.c

#if defined(__weak_reference) && !defined(__FreeBSD__)
前面加上
#ifdef __CYGWIN__
#undef __weak_reference
#endif
)
(漫长的编译。。。)
(如果编译过程出现cpu持续不降而无法前进,
可以Ctrl+C中断编译或结束gcc-3.exe进程然后重新执行make)
$ make install
(如果编译过程出现cpu持续不降而无法前进,
可以Ctrl+C中断编译或结束gcc-3.exe进程然后重新执行make install)
(有些步骤耗时会比较长,需要耐心等候:
make[4]: Entering directory `/usr/src/mysql-5.1.50/mysql-test'
没有回显,所以感觉会很长,可以查看任务管理器install.exe的命令行

$ ./scripts/mysql_install_db
$ cp support-files/my-medium.cnf /etc/my.cnf
(关闭防火墙和原有mysql服务)
$ /usr/local/mysql/bin/mysqld_safe \
--datadir=/usr/local/mysql/data \
--log-error=/var/log/mysql.log &
$ ps
(正常的话看到mysqld的存在:/usr/local/mysql/libexec/mysqld)
$ /usr/local/mysql/bin/mysqlshow -u root
+--------------------+
|     Databases      |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
$ /usr/local/mysql/bin/mysql -u root
mysql>status;
mysql>exit;
Bye
$ /usr/local/mysql/bin/mysqladmin -u root shutdown -h 127.0.0.1
$ ps
(现在看不到mysqld了)

 

 

 

4. 后记。

本来想用mingw编译,试了两次都运行时错误,看来要看着代码调试才行。

cygwin版的mysql可以像linux版那样跑起来,暂时看来没问题。

谢谢那位日本大虾的configure和建数据库的命令行参数。

我想我应该改变一下思路,想想别的hack代码的方法。

记录之以防忘记。

本文大部分内容出自http://www13.atwiki.jp/uhaku/pages/51.html

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值