Справочное руководство по MySQL версии 4.1.1-alpha



Глава 2.3.5 Проблемы с компиляцией? - часть 3


  • Если процесс компиляции завершается аварийно и выводятся такие ошибки, как приведены ниже, то вам следует сделать апгрейд своей версии make

    до GNU make:

    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 работает.

  • Если вы хотите определить флаги для использования их компиляторами C или C++, следует добавить флаги к переменным окружения CFLAGS и CXXFLAGS. Точно так же можно также указать имена компиляторов, используя CC и CXX. Например:

    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 приведен список полезных для различных систем определений флагов.

  • При получении сообщения об ошибке, подобного приведенному ниже, необходимо модернизировать ваш компилятор gcc:

    client/libmysql.c:273: parse error before `__attribute__'

    Компилятор gcc 2.8.1 известен как работающий, но мы рекомендуем вместо него использовать gcc 2.95.2 или egcs 1.0.3a.

  • Если при компиляции mysqld вы получаете ошибки, подобные приведенным ниже, то это означает, что команда configure некорректно определила тип последнего аргумента в функциях accept(), getsockname() или getpeername():

    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.cc' генерируется из `sql_yacc.yy'. Обычно в процессе сборки не требуется создавать `sql_yacc.cc', поскольку MySQL поставляется с уже сгенерированной копией. Однако если действительно необходимо создать этот файл заново, то можно столкнуться со следующей ошибкой:

    "sql_yacc.yy", line xxx fatal: default action causes potential...

    Это признак того, что ваша версия yacc является неполной. Возможно, следует установить bison (GNU-версия yacc) и использовать вместо yacc.

  • При необходимости отладки mysqld или клиента MySQL запустите configure

    с опцией --with-debug, затем перекомпилируйте и слинкуйте эти программы с новой клиентской библиотекой (see section E.2 Отладка клиента MySQL).




    Содержание  Назад  Вперед