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.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, чтобы правильно инициализировать внутренние переменные бесконечности и 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–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