コンパイル中の問題が発生し DEC CC and gcc をインストールしている場合、configure を以下のように実行してみます。
CC=cc CFLAGS=-O CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql
c_asm.h
ファイルに問題がある場合、ダミーの
c_asm.h
ファイルを作成してそれを使用します。
touch include/c_asm.h CC=gcc CFLAGS=-I./include \ CXX=gcc CXXFLAGS=-O3 \ ./configure --prefix=/usr/local/mysql
次の ld プログラムの問題は、最新の DEC (Compaq) パッチキットを http://ftp.support.compaq.com/public/unix/ からダウンロードすることで修正できます。
OSF/1 V4.0D およびコンパイラ 「DEC C V5.6-071 on
Digital Unix V4.0 (Rev. 878)」
ではそのコンパイラはいくつかの予想外の振る舞い
(未定義の asm
記号)
をしました。/bin/ld
も破損すると思われます
(mysqld のリンク中の
_exit undefined
エラーの問題)。このシステムでは、MySQL
を以下の configure
行で /bin/ld
を OSF 4.0C
バージョン置き換えたあとに何とかコンパイルできました。
CC=gcc CXX=gcc CXXFLAGS=-O3 ./configure --prefix=/usr/local/mysql
With the Digital compiler "C++ V6.1-029," the following should work:
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"
OSF/1
のバージョンのいくつかでは、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 と接続して 「sleeping」 しているクライアントを切断できなくなる副作用が出ます。その代わり、クライアントはそれが次のコマンドを発行したときに切断します。
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
オプションがコンパイル行にない場合は
-O0
を
gcc
の直ぐ後に追加する)
に変更します。この変更を行ったあと、ディレクトリの上段に戻り
make
を再度実行します。