На Solaris или Linux с использованием компилятора gcc все программы MySQL у нас компилируются чисто и без каких-либо предупреждений. В других системах могут возникать предупреждения из-за различий включаемых системных файлов (по поводу предупреждений, которые могут возникать при использовании потоков MIT-pthreads, обращайтесь к разделу see section 2.3.6 Замечания по потокам MIT-pthreads). Относительно других проблем сверьтесь с приведенным ниже списком.
Решение многих проблем предполагает выполнение переконфигурирования. В
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: 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.
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 работает.
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 приведен список полезных для различных систем определений флагов.
client/libmysql.c:273: parse error before `__attribute__'Компилятор gcc 2.8.1 известен как работающий, но мы рекомендуем вместо него использовать gcc 2.95.2 или egcs 1.0.3a.
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.