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.2libstdc++на архитектуре 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 `(…)', вам может потребоваться изменить некоторые файлы в подкаталогеgccinclude, чтобы добавить правильные прототипы функций. Например, 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 тоже.Сценарии
gccfixincludesи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