cygwin mysql 安装_mysql在cygwin下的编译问题

一、安装环境

cygwin环境

二、问题

错误1

In file included from

/cygdrive/d/openSource/mysql/mysql-5.6.17.tar/mysql-5.6.17/cmd-line-utils/libedit/readline.c:54:0:

/cygdrive/d/openSource/mysql/mysql-5.6.17.tar/mysql-5.6.17/cmd-line-utils/libedit/editline/readline.h:79:29:

致命错误:sys/ttydefaults.h:No such file or directory

#include

解决方法

在readline.h中

#if !defined(__sun)

&& !defined(__hpux) && !defined(_AIX) &&

!defined(__QNXNTO__) && !defined(__USLC__)

修改为

#if

!defined(__sun) && !defined(__hpux) && !defined(_AIX) &&

!defined(__QNXNTO__) && !defined(__USLC__) &&

!defined(__CYGWIN__)

参考

http://blog.csdn.net/zhukanjie/article/details/6129389

http://www.cygwin.com/ml/cygwin/2010-01/msg01124.html

错误2

/cygdrive/d/openSource/mysql/mysql-5.6.17.tar/mysql-5.6.17/cmd-line-utils/libedit/vi.c:921:19:

错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘char’

__weakref_visible char *my_get_alias_text(const char *)

^

/cygdrive/d/openSource/mysql/mysql-5.6.17.tar/mysql-5.6.17/cmd-line-utils/libedit/vi.c:922:36:

错误:宏“__weak_reference”需要 2 个参数,但只给出了 1

__weak_reference(get_alias_text);

^

/cygdrive/d/openSource/mysql/mysql-5.6.17.tar/mysql-5.6.17/cmd-line-utils/libedit/vi.c:

在函数‘vi_alias’中:

/cygdrive/d/openSource/mysql/mysql-5.6.17.tar/mysql-5.6.17/cmd-line-utils/libedit/vi.c:933:6:

错误:‘my_get_alias_text’未声明(在此函数内第一次使用)

解决方法

文件:vi.c

在代码“#if defined(__weak_reference) &&

!defined(__FreeBSD__)” 前增加

#ifdef __CYGWIN__

#undef

__weak_reference

#endif

错误3

/cygdrive/e/opensource/mysql/mysql-5.6.17.tar/mysql-5.6.17/strings/dtoa.c:55:14:

错误:与‘dtoa’类型冲突

static char *dtoa(double, int, int, int *, int *, char **,

char *, size_t);

^

In file included from

/usr/include/sys/types.h:20:0,

from

/usr/include/pthread.h:14,

from

/cygdrive/e/opensource/mysql/mysql-5.6.17.tar/mysql-5.6.17/include/my_global.h:266,

from

/cygdrive/e/opensource/mysql/mysql-5.6.17.tar/mysql-5.6.17/include/my_base.h:24,

from

/cygdrive/e/opensource/mysql/mysql-5.6.17.tar/mysql-5.6.17/strings/dtoa.c:39:

/usr/include/stdlib.h:169:8:

附注:‘dtoa’的上一个声明在此

char * _EXFUN(dtoa,(double, int, int, int *, int*,

char**));

^

strings/CMakeFiles/strings.dir/build.make:586: recipe

for target ‘strings/CMakeFiles/strings.dir/dtoa.c.o‘ failed

解决方法

dtoa.c中将dtoa替换为_dtoa

错误4

In file included from

/cygdrive/e/opensource/mysql/mysql-5.6.17.tar/mysql-5.6.17/storage/innobase/handler/ha_innodb.cc:47:0:

/cygdrive/e/opensource/mysql/mysql-5.6.17.tar/mysql-5.6.17/storage/innobase/include/fts0priv.ic:

在函数‘ulint fts_read_object_id(ib_id_t*, const

char*)’中:

/cygdrive/e/opensource/mysql/mysql-5.6.17.tar/mysql-5.6.17/storage/innobase/include/univ.i:453:26:

错误:expected ‘)’ before ‘PRIx64’

# define UINT64PFx "%016"PRIx64

^

/cygdrive/e/opensource/mysql/mysql-5.6.17.tar/mysql-5.6.17/storage/innobase/include/fts0priv.ic:69:21:

附注:in expansion of macro ‘UINT64PFx’

return(sscanf(str, UINT64PFx, id) ==

1);

^

解决方法

修改文件univ.i

# define UINT32PF "%"PRIu32

# define INT64PF"%"PRId64

# define

UINT64PF"%"PRIu64

# define UINT64PFx"%016"PRIx64

# define DBUG_LSN_PF

UINT64PF

修改为

#if defined (__CYGWIN__)

# define UINT32PF"%""u"

# define

INT64PF"%""l""d"

# define UINT64PF"%""l""u"

# define

UINT64PFx"%016d""l""x"

# define DBUG_LSN_PF UINT64PF

#else

# define

UINT32PF"%"PRIu32

# define INT64PF"%"PRId64

# define

UINT64PF"%"PRIu64

# define UINT64PFx"%016"PRIx64

# define DBUG_LSN_PF

UINT64PF

#endif /*__INSIDE_CYGWIN__*/

原因

在cygwin环境下,g++使用的inttypes.h在目录/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/include中

该文件中没有UINT32PF的定义,所以会导致编译错误

参考

1、用于在编译中进行调试的gcc/g++命令

http://www.lingcc.com/2011/06/27/11679/

原文:http://www.cnblogs.com/northhurricane/p/3665120.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值