Spec-Zone.ru › Octave 6

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. Вы можете найти дерево каталогов gcc include, выполнив команду

    gcc -print-libgcc-file-name

    Каталог файлов gcc include обычно начинается в том же каталоге, что и файл 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, если возникают ошибки, такие как
    /usr/tmp/cc007458.s:unknown:Undefined local
          symbol LBB7656
    /usr/tmp/cc007458.s:unknown:Undefined local
          symbol LBE7656

    при компиляции Array.cc и Matrix.cc, попробуйте перекомпилировать эти файлы без -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, чтобы правильно инициализировать внутренние переменные бесконечности и NaN Octave.

    Если ваша система не поддерживает арифметику 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/v5.2.0/Installation-Problems.html

Spec-Zone.ru

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