2.3.4 Установка из экспериментального набора исходных кодов | Оглавление | 2.3.6 Замечания по потокам MIT-pthreads |
На Solaris или Linux с использованием компилятора gcc
все программы MySQL у нас
компилируются чисто и без каких-либо предупреждений. В других системах
могут возникать предупреждения из-за различий включаемых системных файлов
(по поводу предупреждений, которые могут возникать при использовании
потоков MIT-pthreads
, обращайтесь к разделу see section 2.3.6 Замечания по потокам MIT-pthreads).
Относительно других проблем сверьтесь с приведенным ниже списком.
Решение многих проблем предполагает выполнение переконфигурирования. В случаях, когда переконфигурирование действительно необходимо, следует учитывать следующее:
configure
запускается после того, как эта команда уже
запускалась, то можно использовать информацию, которая была собрана во
время предыдущего вызова команды (такая информация хранится в
`config.cache'). При запуске configure
ищет данный файл и, если он
существует, читает его содержимое, исходя из предположения, что данная
информация все еще правильна. При выполнении переконфигурации это
предположение является некорректным.
configure
необходимо опять запускать make
для
перекомпилирования. Однако, возможно, вначале вам потребуется удалить
старые объектные файлы из предыдущих компоновок, поскольку они были
скомпилированы с использованием других опций конфигурации.
Чтобы не допустить использования старой конфигурационной информации или
объектных файлов, перед перезапуском configure
запустите следующие
команды:
shell> rm config.cache shell> make cleanВ качестве альтернативного варианта можно использовать команду
make
distclean
.
В следующем списке представлены некоторые проблемы компилирования MySQL,
которые, как оказалось, возникают наиболее часто:
Internal compiler error: program cc1plus got fatal signal 11 или Out of virtual memory или Virtual memory exhaustedПроблема заключается в том, что для компиляции `sql_yacc.cc' со встраиваемыми функциями компилятору
gcc
требуется значительное количество
памяти. Попробуйте произвести запуск configure
с опцией --with-low-memory
:
shell> ./configure --with-low-memoryДанная опция вызывает добавление
-fno-inline
к компилируемой строке для
gcc
и -O0
- при использовании какого-либо другого компилятора. Даже если у
вас столько памяти и пространства для свопинга, что, по вашему мнению,
невозможно выйти за их пределы, все же стоит попытаться использовать опцию
with-low-memory
. Эта проблема, по нашим наблюдениям, возникала даже на
системах с аппаратными реализациями, обладающими широкими возможностями;
обычно она устраняется с помощью опции --with-low-memory
.
configure
выбирает c++ как имя компилятора и GNU c++
линкуется с -lg++
. При использовании gcc
этот режим работы может
вызывать такие проблемы в процессе конфигурации, как:
configure: error: installation or configuration problem: C++ compiler cannot create executables.Во время компиляции могут также возникать проблемы, относящиеся к
g++
,
libg++
или libstdc++
. Одна из причин их возникновения заключается в том,
что, возможно, у вас нет g++
или есть g++
, но нет библиотеки libg++
или
libstdc++
. Следует изучить файл `config.log' - по нему вы должны точно
определить причину, по которой не работал компилятор c++ ! Чтобы обойти
эти проблемы, можно в качестве компилятора C++ использовать gcc.
Попробуйте установить переменную окружения CXX
в gcc -O3
. Например:
shell> CXX="gcc -O3" ./configureЭта команда работает, поскольку gcc компилирует исходные коды C++ так же хорошо, как и
g++
, но по умолчанию не линкует libg++
или libstdc++
.
Есть, конечно, и другая возможность устранения этих проблем, которая
заключается в установке g++
, libg++
и libstdc++
. Однако мы не
рекомендовали бы использовать libg++
или libstdc++
с MySQL, поскольку это
только увеличит размер бинарного кода mysqld
без предоставления каких-либо
преимуществ. Некоторые версии этих библиотек в прошлом также вызывали
непонятные проблемы у пользователей MySQL.
make
до GNU make
:
making all in mit-pthreads make: Fatal error in reader: Makefile, line 18: Badly formed macro assignment или make: file `Makefile' line 18: Must be a separator (: или pthread.h: No such file or directoryОперационные системы Solaris и FreeBSD, как известно, имеют ненадежные программы
make
.
Известно также, что версия GNU make
3.75 работает.
CFLAGS
и
CXXFLAGS
. Точно так же можно также указать имена компиляторов,
используя CC
и CXX
. Например:
shell> CC=gcc shell> CFLAGS=-O3 shell> CXX=gcc shell> CXXFLAGS=-O3 shell> export CC CFLAGS CXX CXXFLAGSВ разделе section 2.2.9 Бинарные коды MySQL, скомпилированные в MySQL AB приведен список полезных для различных систем определений флагов.
gcc
:
client/libmysql.c:273: parse error before `__attribute__'Компилятор
gcc
2.8.1 известен как работающий, но мы рекомендуем вместо
него использовать gcc
2.95.2 или egcs
1.0.3a.
mysqld
вы получаете ошибки, подобные приведенным
ниже, то это означает, что команда configure
некорректно определила
тип последнего аргумента в функциях accept()
, getsockname()
или
getpeername()
:
cxx: Error: mysqld.cc, line 645: In this statement, the referenced type of the pointer value "&length" is "unsigned long", which is not compatible with "int". new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);Чтобы устранить эту ошибку, отредактируйте файл `config.h' (который генерируется
configure
). Найдите в нем следующие строки:
/* Define as the base type of the last arg to accept */ #define SOCKET_SIZE_TYPE XXXи измените
XXX
на size_t
или int
- в зависимости от своей операционной
системы (учтите, что эти действия необходимо будет повторять каждый раз
при запуске configure
, поскольку configure восстанавливает файл
`config.h').
"sql_yacc.yy", line xxx fatal: default action causes potential...Это признак того, что ваша версия
yacc
является неполной. Возможно,
следует установить bison
(GNU-версия yacc) и использовать вместо yacc
.
mysqld
или клиента MySQL запустите configure
с опцией --with-debug
, затем перекомпилируйте и слинкуйте эти
программы с новой клиентской библиотекой (see section E.2 Отладка клиента MySQL).
2.3.4 Установка из экспериментального набора исходных кодов | Оглавление | 2.3.6 Замечания по потокам MIT-pthreads |