首先从MYSQL官方网站下载MYSQL源代码,本文以 mysql-4.0.20 为例。
$ tar -zxvf mysql-4.0.20.tar.gz
$ cd mysql-4.0.20
编译过程中主要需解决两个问题:
- #pragma interface
由于CYGWIN环境中不支持 #pragma interface,所以需注释掉所有文件中的 #pragma interface,用以下命令可实现:
$ grep -rl "#pragma interface" * | xargs -r sed -i "s:#pragma interface:/*/0*/:g" - pthread
编译过程中还会出现`PTHREAD_MUTEX_ERRORCHECK_NP'未申明的错误,原因也是在CYGWIN中还不能用,请查看这里的说明。偶的做法是将 mysys/my_thr_init.c 文件的65-73行注释掉。
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
// pthread_mutexattr_init(&my_fast_mutexattr);
// pthread_mutexattr_setkind_np(&my_fast_mutexattr,PTHREAD_MUTEX_ADAPTIVE_NP);
#endif
#ifdef PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
// pthread_mutexattr_init(&my_errchk_mutexattr);
// pthread_mutexattr_setkind_np(&my_errchk_mutexattr,
// PTHREAD_MUTEX_ERRORCHECK_NP);
#endif
下面才真正开始编译
$ CFLAGS="-O3" /
$ CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" /
$ ./configure --prefix=/usr/local/mysql /
--with-mysqld-ldflags=-all-static /
--with-charset=gbk
$ make
$ make install
$ ./scripts/mysql_install_db
$ /usr/local/mysqlbin/mysqld_safe --user=administrator &
至此编译已结束,据偶目前的使用情况来看,还未出现过什么问题 :)