如果遇到编译问题并安装了DEC CC和gcc,尝试这样运行configure:
CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql
如果遇到“c_asm.h”文件的问题,可以创建并使用一个“哑(dummy)”“c_asm.h”文件:
touch include/c_asm.h CC=gcc CFLAGS=-I./include \ CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql
请注意从http://ftp.support.compaq.com/public/unix/下载最新的DEC(Compaq)补丁可以修复ld程序的下面问题。
在OSF1 V4.0D和编译器"DEC C V5.6-071 on Digital UNIX V4.0 (Rev. 878)" 上,编译器有了一些奇怪的行为(未定义asm标志)。/bin/ld好象也被破坏(当链接mysqld时,发生_exit undefined问题)。在这个系统上,从OSF 4.0C的版本替换了/bin/ld后,我们设法用下列configure命令行编译MySQL:
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
用Digital编译器“C++ V6.1-029”,下列命令应该工作:
CC=cc -pthread CFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \ -speculate all -arch host CXX=cxx -pthread CXXFLAGS=-O4 -ansi_alias -ansi_args -fast -inline speed \ -speculate all -arch host -noexceptions -nortti export CC CFLAGS CXX CXXFLAGS ./configure --prefix=/usr/mysql/mysql \ --with-mysqld-ldflags=-all-static --disable-shared \ --with-named-thread-libs="-lmach -lexc -lc"
在OSF1的某些版本中,alloca()函数被破坏,通过删除定义'HAVE_ALLOCA'的“config.h”的行更正它。
alloca()函数也可能在/usr/include/alloca.h里面有一个不正确的原型,源于此的警告可以忽略。
configure将自动地使用下列线程库: --with-named-thread-libs="-lpthread -lmach -lexc -lc"。
当使用gcc时,也可以试试这样运行configure:
CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ....
如果你的信号有问题(MySQL出人意料地在高负载下死掉),可能遇到了一个线程和信号有关的OS 缺陷。在这种情况下,你可以告诉MySQL按如下配置不使用信号:
CFLAGS=-DDONT_USE_THR_ALARM \ CXXFLAGS=-DDONT_USE_THR_ALARM \ ./configure
这不影响MySQL性能,但是有副作用,就是不能用mysqladmin kill或mysqladmin shutdown杀死在一个连接上“睡眠”的客户端。相反,当客户端发出下一个命令时,它将死掉。
使用gcc 2.95.2,会遇到下面的编译错误:
sql_acl.cc:1456: Internal compiler error in `scan_region', at except.c:2566 Please submit a full bug report.
要修复该问题,应当进入sql目录并剪切、复制最后一行gcc,但应将-O3 改为-O0 (或如果编译行没有任何-O选项,应在gcc后面增加-O0)。之后,可以回到顶级目录并重新运行make。