2.6.6.7 Примечания к Alpha-DEC-OSF/1

В случае проблем компиляции при установленных DEC CC и 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 4.0D и компилятора DEC C V5.6-071 на Digital Unix V4.0 (Rev. 878) компилятор начинает вести себя странно (неопределенные asm-символы). Кроме того, /bin/ld также, похоже, содержит ошибки (проблемы с ошибками _exit undefined возникающими при линковании mysqld). На этих системах нам удалось организовать компиляцию MySQL с помощью следующей строки configure, заменив /bin/ld аналогичным файлом из версии OSF 4.0C:

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"

В некоторых версиях OSF/1 испорчена функция alloca(). Ситуацию можно поправить удалением из файла `config.h' строки, в которой определяется HAVE_ALLOCA.

Может также существовать некорректный прототип для функции alloca() в `/usr/include/alloca.h'. Предупреждение, вызванное этим, можно игнорировать.

configure будет автоматически использовать следующие потоковые библиотеки: --with-named-thread-libs="-lpthread -lmach -lexc -lc".

При использовании gcc можно попробовать запустить configure следующей строкой:

shell> CFLAGS=-D_PTHREAD_USE_D4 CXX=gcc CXXFLAGS=-O3 ./configure ...

Возникновение проблем с сигналами (MySQL неожиданно аварийно завершает работу при большой нагрузке), может означать, что вы обнаружили ошибку при работе операционной системы с потоками и сигналами. В данном случае можно запретить MySQL использовать сигналы путем конфигурации его следующим образом:

shell> 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 (или добавьте -O0 непосредственно после gcc, если у вас в строке компиляции отсутствует какая-либо опция -O). После выполнения указанных действий вернитесь в каталог верхнего уровня и запустите make повторно.