Для HP-UX версий 11.x мы рекомендуем использовать MySQL не ниже 3.23.15.
Из-за некоторых критических ошибок в стандартных библиотеках HP-UX до попытки запуска MySQL на HP-UX 11.0 необходимо установить следующие патчи:
PHKL_22840 Streams cumulative PHNE_22397 ARPA cumulative
Применение данных патчей решит проблему получения EWOULDBLOCK
от recv()
и
EBADF
от accept()
в потоковых приложениях.
При использовании gcc
2.95.1 в системе, к которой не были применены патчи,
возникнет ошибка:
In file included from /usr/include/unistd.h:11, from ../include/global.h:125, from mysql_priv.h:15, from item.cc:19: /usr/include/sys/unistd.h:184: declaration of C function ... /usr/include/sys/pthread.h:440: previous declaration ... In file included from item.h:306, from mysql_priv.h:158, from item.cc:19:
Проблема заключается в том, что HP-UX существуют несовместимые определения
функции pthreads_atfork()
. Конфликтующие прототипы находятся в
/usr/include/sys/unistd.h
:184 и в /usr/include/sys/pthread.h
:440
(подробности приведены ниже).
Одно из возможных решений заключается в том, чтобы скопировать
/usr/include/sys/unistd.h
в mysql/include
и отредактировать unistd.h
так,
чтобы определение совпадало с определением из pthread.h
. Ниже приведен
результат работы diff
:
183,184c183,184 < extern int pthread_atfork(void (*prepare)(), void (*parent)(), < void (*child)()); --- > extern int pthread_atfork(void (*prepare)(void), void (*parent)(void), > void (*child)(void));
После этого должна работать конфигурационная программа со следующими параметрами:
CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \ ./configure --prefix=/usr/local/mysql --disable-shared
Если вы используете MySQL 4.0.5 с компилятором HP-UX, то вам подойдет (проверено на cc B.11.11.04):
CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure --with-extra-character-set=complex
Вы можете игнорировать ошибки, подобные этой:
aCC: warning 901: unknown option: `-3': use +help for online documentation
При получении следующего сообщения об ошибке при работе configure
checking for cc option to accept ANSI C... no configure: error: MySQL requires a ANSI C compiler (and a C++ compiler). Try gcc. See the Installation chapter in the Reference Manual.
следует удостовериться, что путь к компилятору K&R не указан раньше, чем путь к компиляторам HP-UX C и C++.
Еще одна причина, по которой вы не сможете скомпилировать MySQL, заключается
в том, что вы забыли указать флаг +DD64
, описанный выше.