ITEEDU

2.12.5.6. Alpha-DEC-OSF/1注意事项

如果遇到编译问题并安装了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。