Spec-Zone.ru › Octave 7

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

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

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

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

  • На некоторых системах DEC alpha может возникнуть проблема с библиотекой libdxml, что приведет к ошибкам с плавающей запятой и/или ошибкам сегментации в подпрограммах линейной алгебры, вызываемых Octave. Если у вас возникнут такие проблемы, вам следует изменить скрипт конфигурации, чтобы 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 include, чтобы добавить правильные прототипы функций. Например, 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. Вы можете найти дерево каталогов include gcc выполнив команду

    gcc -print-libgcc-file-name

    Каталог файлов include 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. Это, по-видимому, связано с тем, что G_HAVE_SYS_WAIT определено как 0 вместо 1 при компиляции libg++.
  • На системах, где используется библиотека ссылок 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 и добавление его в список файлов, которые необходимо связать вместе в файле makefile. Предложения по улучшению решения этой проблемы приветствуются!

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

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

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

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

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

© 1996–2022 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/v7.2.0/Installation-Problems.html

Spec-Zone.ru

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