Spec-Zone.ru › MySQL 5.7

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 xxx fatal: 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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/compilation-problems.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API