Spec-Zone.ru › MySQL 9.2

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 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-8.4-en/compilation-problems.html

Spec-Zone.ru

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