2.8.8 Работа с проблемами компиляции MySQL
Решение многих проблем заключается в переконфигурации. Если вы производите переконфигурацию, обратите внимание на следующее:
Если CMake запускается после предыдущего запуска, он может использовать информацию, собранную во время предыдущего вызова. Эта информация хранится в
CMakeCache.txt. При запуске CMake он ищет этот файл и читает его содержимое, если он существует, предполагая, что информация по-прежнему верна. Это предположение неверно при переконфигурации.Каждый раз при запуске CMake необходимо повторно запустить make для перекомпиляции. Однако, возможно, вам потребуется удалить старые объектные файлы из предыдущих сборок, поскольку они были скомпилированы с использованием различных параметров конфигурации.
Чтобы предотвратить использование старых объектных файлов или информации о конфигурации, выполните следующие команды перед повторным запуском CMake:
В Unix:
$> make clean
$> rm CMakeCache.txt
В Windows:
$> devenv MySQL.sln /clean
$> del CMakeCache.txt
Если вы строили за пределами исходного дерева, удалите и пересоздайте каталог сборки перед повторным запуском CMake. Инструкции по сборке за пределами исходного дерева см. в Как собрать MySQL-сервер с помощью CMake.
В некоторых системах могут возникать предупреждения из-за различий в системных файлах заголовков. В следующем списке описаны другие проблемы, которые чаще всего возникают при компиляции MySQL:
-
Для определения используемых компиляторов C и C++, можно определить переменные среды
CCиCXX. Например:$>
CC=gcc$>CXX=g++$>export CC CXXХотя это можно сделать в командной строке, как показано выше, вы можете предпочесть определить эти значения в скрипте сборки, в этом случае команда export не потребуется.
Для указания собственных флагов компилятора C и C++, используйте опции CMake
CMAKE_C_FLAGSиCMAKE_CXX_FLAGS. См. Флаги компилятора.Чтобы узнать, какие флаги вам могут потребоваться, вызовите mysql_config с опциями
--cflagsи--cxxflags. Чтобы увидеть команды, выполняемые на этапе компиляции после конфигурации MySQL с помощью CMake, запустите make VERBOSE=1 вместо просто make.
Если компиляция завершается неудачно, проверьте, включена ли опция
MYSQL_MAINTAINER_MODE. Этот режим приводит к тому, что предупреждения компилятора становятся ошибками, поэтому отключение может позволить продолжить компиляцию.-
Если компиляция завершается с ошибками, подобными приведенным ниже, необходимо обновить вашу версию make до GNU make:
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 работает.
-
Файл
sql_yacc.ccгенерируется изsql_yacc.yy. Обычно процесс сборки не требует созданияsql_yacc.cc, так как MySQL поставляется с предварительно сгенерированной копией. Однако, если вам нужно пересоздать его, вы можете столкнуться с этой ошибкой:"sql_yacc.yy", line
xxxfatal: default action causes potential...Это признак того, что ваша версия yacc недостаточна. Вероятно, вам нужно установить последнюю версию bison (GNU-версия yacc) и использовать её вместо этого.
Версии bison, более старые, чем 1.75, могут сообщать об этой ошибке:
sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
Максимальный размер таблицы фактически не превышен; ошибка вызвана ошибками в более старых версиях bison.
Дополнительную информацию о получении или обновлении инструментов см. в разделе требований к системе в разделе 2.8, «Установка MySQL из исходного кода».
© 2025 Oracle
Licensed under the GPLv2 License.