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. Вы можете найти дерево каталогов
gccinclude, выполнив командуgcc -print-libgcc-file-name
Каталог файлов
gccinclude обычно начинается в том же каталоге, что и файл 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