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. Чтобы увидеть команды, выполняемые во время этапа компиляции после использования CMake для конфигурации MySQL, запустите 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.