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