Spec-Zone.ru › Octave 9

E.4 Проблемы при установке

В этом разделе перечислены проблемы (а также некоторые кажущиеся проблемы, которые на самом деле не означают, что что-то не так), возникающие при установке Octave.

  • В некоторых системах SCO info не компилируется, если в config.h определено HAVE_TERMIOS_H. Для успешной компиляции достаточно удалить это определение из info/config.h.
  • Если configure находит dlopen, dlsym, dlclose и dlerror, но не находит заголовочный файл dlfcn.h, необходимо найти исходный код этого заголовочного файла и установить его в каталог usr/include. Как сообщается, такая проблема возникает в Slackware 3.1. В системах Linux/GNU исходный код dlfcn.h находится в пакете ldso.
  • Не удается собирать файлы .oct.

    Вероятно, у вас должна быть разделяемая версия libstdc++. Для сборки разделяемых версий libstdc++ версии 2.7.2 на архитектуре HP-PA требуется патч. Его можно найти по адресу ftp://ftp.cygnus.com/pub/g++/libg++-2.7.2-hppa-gcc-fix.

  • В некоторых системах DEC alpha могут возникать проблемы с библиотекой libdxml, приводящие к ошибкам с плавающей точкой и/или ошибкам сегментации в процедурах линейной алгебры, вызываемых Octave. Если вы столкнулись с такими проблемами, измените сценарий configure так, чтобы SPECIAL_MATH_LIB не было установлено в -ldxml.
  • В системах FreeBSD Octave может зависать при инициализации некоторых внутренних констант. Похоже, проблему можно устранить, заменив
    options      GPL_MATH_EMULATE

    на

    options      MATH_EMULATE

    в файлах конфигурации ядра (обычно они находятся в каталоге /sys/i386/conf). После этого потребуется пересобрать ядро, установить его и перезагрузить систему.

  • Если при компиляции sighandlers.cc возникают ошибки вида
    passing `void (*)()' as argument 2 of
      `octave_set_signal_handler(int, void (*)(int))'

    или

    warning: ANSI C++ prohibits conversion from `(int)'
             to `(...)'

    , возможно, потребуется отредактировать некоторые файлы в подкаталоге заголовочных файлов gcc, добавив корректные прототипы содержащихся там функций. Например, в Ultrix 4.2 необходимо добавить корректные объявления функции signal и макроса SIG_IGN в файл signal.h.

    В некоторых системах макрос SIG_IGN определен примерно так:

    #define  SIG_IGN  (void (*)())1

    хотя на самом деле он должен быть определен примерно так:

    #define  SIG_IGN  (void (*)(int))1

    чтобы соответствовать объявлению прототипа функции signal. Это изменение также следует внести для символов SIG_DFL и SIG_ERR. Возможно, потребуется также изменить определения в sys/signal.h.

    Сценарии gcc fixincludes и fixproto, вероятно, должны исправлять эти проблемы при установке gcc измененного набора заголовочных файлов, но, насколько мне известно, этого пока не сделано.

    Не следует изменять файлы в /usr/include. Найти дерево каталогов заголовочных файлов gcc можно с помощью команды

    gcc -print-libgcc-file-name

    Каталог с заголовочными файлами gcc обычно начинается в том же каталоге, где находится файл libgcc.a.

  • Некоторые подпрограммы Fortran могут не компилироваться со старыми версиями компилятора Sun Fortran. Если при компиляции подпрограмм Fortran в подкаталоге liboctave/external появляются ошибки вида
    zgemm.f:
            zgemm:
    warning: unexpected parent of complex expression subtree
    zgemm.f, line 245: warning: unexpected parent of complex
      expression subtree
    warning: unexpected parent of complex expression subtree
    zgemm.f, line 304: warning: unexpected parent of complex
      expression subtree
    warning: unexpected parent of complex expression subtree
    zgemm.f, line 327: warning: unexpected parent of complex
      expression subtree
    pcc_binval: missing IR_CONV in complex op
    make[2]: *** [zgemm.o] Error 1

    , следует либо обновить компилятор, либо попробовать выполнить компиляцию без оптимизации.

  • В системах NeXT, если при компиляции Array.cc и Matrix.cc возникают ошибки вида
    /usr/tmp/cc007458.s:unknown:Undefined local
          symbol LBB7656
    /usr/tmp/cc007458.s:unknown:Undefined local
          symbol LBE7656

    , попробуйте перекомпилировать эти файлы без -g.

  • Некоторые пользователи сообщали, что вызовы system() и программы просмотра страниц не работают в системах SunOS. По-видимому, это происходит из-за того, что при компиляции libg++ макрос G_HAVE_SYS_WAIT определен как 0 вместо 1.
  • В системах, где используется эталонная библиотека BLAS, следующее умножение матрицы на вектор некорректно обрабатывает значения NaN вида NaN * 0.
    [NaN, 1; 0, 0] * [0; 1]
    ⇒
    [ 1
      0 ]
    
    correct result ⇒
    [ NaN
      0   ]

    Чтобы устранить эту проблему, установите другую библиотеку BLAS, например OpenBLAS или ATLAS.

  • В системах NeXT при связывании с libsys_s.a может не удаваться разрешить следующие функции
    _tcgetattr
    _tcsetattr
    _tcflow

    , которые входят в состав libposix.a. К сожалению, при связывании Octave с параметром -posix возникают следующие неопределенные символы.

    .destructors_used
    .constructors_used
    _objc_msgSend
    _NXGetDefaultValue
    _NXRegisterDefaults
    .objc_class_name_NXStringTable
    .objc_class_name_NXBundle

    Один из обходных путей — извлечь termios.o из libposix.a, поместить его в каталог src Octave и добавить в список файлов для связывания в make-файле. Будем рады предложениям о более подходящих способах решения этой проблемы!

  • Если Octave немедленно аварийно завершается с исключением, связанным с плавающей точкой, вероятно, не удается инициализировать значения IEEE для бесконечности и NaN.

    Если ваша система поддерживает арифметику IEEE, эту проблему можно устранить, изменив функцию octave_ieee_init в файле lo-ieee.cc, чтобы она корректно инициализировала внутренние переменные Octave для бесконечности и NaN.

    Если ваша система не поддерживает арифметику IEEE, но сценарий configure Octave ошибочно определил, что поддерживает, проблему можно обойти, отредактировав файл config.h и удалив определения HAVE_ISINF, HAVE_FINITE и HAVE_ISNAN.

    В любом случае сообщите об этой ошибке, поскольку, возможно, сценарий конфигурации Octave удастся изменить так, чтобы он автоматически определял правильный вариант.

  • Если Octave не удается найти заголовочный файл, поскольку он установлен в каталоге, который компилятор обычно не ищет, этот каталог можно добавить в путь поиска заголовочных файлов, указав, например, CPPFLAGS=-I/some/nonstandard/directory в качестве аргумента для configure. Аналогичным образом можно указать и другие переменные: CFLAGS, CXXFLAGS, FFLAGS и LDFLAGS. Если передать их как параметры сценария configure, они также будут записаны в файл config.status. По умолчанию CPPFLAGS и LDFLAGS пусты, CFLAGS и CXXFLAGS установлены в "-g -O2", а FFLAGS установлена в "-O".

© 1996–2026 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v9.4.0/Installation-Problems.html

Spec-Zone.ru

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