cygwin下编译mysql5.1.46 source code

来源:互联网 发布:淘宝投诉卖家多久受理 编辑:程序博客网 时间:2024/04/28 02:49

 为什么要编译源码?一:虽然windows下装好了mysql,但cygwin的MinTTY无法调用windows下的交互性程序,输入mysql -u root -p下面没反应,像个死循环一样。二:为了装mysql-ruby驱动,在cygwin下没有mysql的头文件和库也不行

 

这里其实主要是编译mysql client相关代码,并安装mysql的头文件,库。。。ubuntu下一个apt-get install mysqlclient-dev就好了。

 

从这里http://ftp.plusline.de/mysql/Downloads/下载 mysql-5.1.46.tar.gz 

或者在mysql官网上http://downloads.mysql.com/archives.php?p=mysql-5.1&v=5.1.46下载, 一般情况下Mysql下载页面只给出了

最新的稳定版本下载,要下载以前的版本可以在下面找archives,字很小。

 

放在cygwin的目录下,如/tmp/

1. tar xzf  mysql-5.1.46.tar.gz

2. 在cygwin中安装readline, setup|base|libreadline* ,之所以要这样做是因为mysql源代码中自带的readline会出错

3. 

    ./configure --without-server --without-readline CFLAGS=-02 CXXFLAGS=-02

    make

    make install

 

问题:

   ./configure错误:error: Your compiler cannot convert a longlong value to a float!If you are using gcc 2.8.# you should upgrade to egcs 1.0.3 or newer and try   again !

  看了一下gcc版本,3.*的,不是gcc的问题。上网查了一下,说是mysql的bug。

  有人说在configure文件中找到close()函数,替换成fclose(),但我这里不行,因为里边已经是fclose()了。在configure文件中,找到这句提示,删除后面的 exit 1, 把前面的的出错信息也给它删了或改了!

  另一种办法是打开cygwin的setup程序,把devel开发包全装上,再编译,就好了。

4。编译完成,测试

     前转载文章有说:

     mysql -h 127.0.0.1 -u root -p

    默认的情况下,不带 -h 参数或者使用 -h localhost,MySQL 都会使用 Unix socket file 连接服务器,即使你在命令中指定了端口也会被忽略的,所以肯定连接不上的,提示找不到 /tmp/mysql.sock。使用 IP 或者主机名后,MySQL 就会使用 TCP/IP 模式连接服务器的 3306 端口,这样就什么没问题了。

   按前面转载文章做法,新建配置文件 /etc/my.cnf 增加protocol = TCP即可。运行mysql命令的时候,shell可能会提示说

”  Warning: World-writable config file '/etc/my.cnf' is ignored“

  解决办法:chmod 644 /etc/my.cnf

 

 

原创粉丝点击