ITEEDU

2.12.1.5. Linux x86注意事项

MySQL需要5.4.12或更新版本的libc。已知它可以在libc 5.4.46中工作。glibc 2.0.6和更新版本应当也可以工作。Red Hat的glibc RPM有一些问题,因此如果你遇到问题,应看看是否有更新版。已知glibc 2.0.7-19和2.0.7-29 RPM可以工作。

如果你正使用Red Hat 8.0或更新的glibc 2.2.x库,你会看见mysqld执行gethostbyaddr()时会死掉。这是因为新的glibc库在执行该调用时需要大于128KB的堆栈空间。要想修复该问题,用--thread-stack=192K选项启动mysqld。(在MySQL 4以前的版本中应使用-O thread_stack=192K)。 在MySQL 4.0.10和以上版本中,该堆栈空间值即为默认值,因此你不会看见该问题。

如果你正使用gcc 3.0和以上版本编译MySQL,在编译MySQL前你必须先安装libstdc++v3库;如果不这样做,在联接过程中会遇到关于丢失__cxa_pure_virtual符号的错误。

在一些旧的Linux分发版中,configure会生成如下错误:

Syntax error in sched.h. Change _P to __P in the
/usr/include/sched.h file.
See the Installation chapter in the Reference Manual.

只需要按照错误消息的提示操作。对只有一条下划线的_P名再增加一条下划线,然后重新尝试。

编译时可能会出现警告。下面的警告可以忽略:

mysqld.cc -o objs-thread/mysqld.o
mysqld.cc: In function `void init_signals()':
mysqld.cc:315: warning: assignment of negative value `-1' to
`long unsigned int'
mysqld.cc: In function `void * signal_hand(void *)':
mysqld.cc:346: warning: assignment of negative value `-1' to
`long unsigned int'

如果mysqld启动时总是出现转储内核, 问题可能是你使用了旧的/lib/libc.a。尝试重新对其命名,然后删掉sql/mysqld并重新执行make install然后再次尝试。已经报导在部分Slackware安装中出现了该问题。

当链接mysqld时如果出现下面的错误,说明libg++.a安装不正确:

/usr/lib/libc.a(putc.o): In function `_IO_putc':
putc.o(.text+0x0): multiple definiti在of `_IO_putc'

你可以使用libg++.a运行configure来避免该问题:

shell> CXX=gcc ./configure