Spec-Zone.ru › Octave 9

Предыдущая: Компиляция Octave с 64-разрядной индексацией, Выше: Установка Octave [Оглавление][Индекс]

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

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

  • На некоторых системах SCO info не удаётся скомпилировать, если HAVE_TERMIOS_H определено в config.h. Просто удалите определение из info/config.h, чтобы компиляция прошла успешно.
  • Если configure находит dlopen, dlsym, 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, чтобы правильно инициализировать внутренние переменные бесконечности и 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".

Предыдущая: Компиляция Octave с 64-разрядной индексацией, Выше: Установка Octave [Оглавление][Индекс]

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

Spec-Zone.ru

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