GNU Octave -- a high-level language for numerical computations. Copyright (C) 1996, 1997 John W. Eaton Last updated: Fri Feb 6 02:23:36 1998 Overview -------- GNU Octave is a high-level language, primarily intended for numerical computations. It provides a convenient command line interface for solving linear and nonlinear problems numerically. GNU Octave is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Octave is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file COPYING for more details. Availability ------------ The latest released version of Octave is always available via anonymous ftp from ftp.che.wisc.edu in the directory /pub/octave. Complete source and binaries for several popular systems are available. Source distributions of Octave are also available from prep.ai.mit.edu in the directory /pub/gnu, as well as many mirror sites around the world. Installation and Bugs --------------------- Octave requires approximately 125MB of disk storage to unpack and compile from source (significantly less if you don't compile with debugging symbols or create shared libraries). Once installed, Octave requires approximately 65MB of disk space (again, considerably less if you don't build shared libraries or the binaries and libraries do not include debugging symbols). To compile Octave, you will need a recent version of GNU Make. You will also need g++ 2.7.2 or later. Version 2.8.0 or egcs 1.0.x should work. Later versions may work, but C++ is still evolving, so don't be too surprised if you run into some trouble. It is no longer necessary to have libg++, but you do need to have the GNU implementation of libstdc++. If you are using g++ 2.7.2, libstdc++ is distributed along with libg++, but for later versions, libstdc++ is distributed separately. For egcs, libstdc++ is included with the compiler distribution. YOU MUST HAVE GNU MAKE TO COMPILE OCTAVE. Octave's Makefiles use features of GNU Make that are not present in other versions of make. GNU Make is very portable and easy to install. See the notes in the files INSTALL and INSTALL.OCTAVE for more specific installation instructions, including directions for installing Octave from a binary distribution. The file BUGS contains a recommended procedure for reporting bugs, as well as a list of known problems and possible fixes. Documentation ------------- Octave's manual has been revised for version 2.0, but it is lagging a bit behind the development of the software. In particular, there is currently no complete documentation of the C++ class libraries or the support for dynamic linking and user-defined data types. If you notice ommissions or inconsistencies, please report them as bugs to bug-octave@bevo.che.wisc.edu. Specific suggestions for ways to improve Octave and its documentation are always welcome. Implementation -------------- Octave is being developed with the Free Software Foundation's make, bison (a replacement for YACC), flex (a replacement for lex), gcc/g++, and libstdc++ on an Intel Pentium II system running Linux/GNU. It should be possible to install it on any machine that runs GCC/G++. It may also be possible to install it using other implementations of these tools, but it will most certainly require much more work. Do yourself a favor and get the GNU development tools, either via anonymous ftp from prep.ai.mit.edu or by writing the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. The underlying numerical solvers are currently standard Fortran ones like Lapack, Linpack, Odepack, the Blas, etc., packaged in a library of C++ classes (see the files in the libcruft and liboctave subdirectories). If possible, the Fortran subroutines are compiled with the system's Fortran compiler, and called directly from the C++ functions. If that's not possible, they are translated with f2c and compiled with a C compiler. Better performance is usually achieved if the intermediate translation to C is avoided. The library of C++ classes may also be useful by itself. Additional Information ---------------------- Up to date information about Octave is available on the WWW at the URL http://bevo.che.wisc.edu/octave, including archives of the help-octave, bug-octave, and octave-sources mailing lists. -- John W. Eaton jwe@bevo.che.wisc.edu University of Wisconsin-Madison Department of Chemical Engineering
Since July 1996, most work on Octave has been done using a Linux system, and a number of people who regularly test Octave snapshot releases also primarily use Linux systems. Because of this, I believe Octave should run reasonably well on most current Linux systems. However, there have been some problems in the past, usually the result of improper installation of compilers or libraries. Sometimes the problems have happened because of a botched upgrade or even a buggy Linux distribution. If you can, you should probably install Octave from one of the binary distributions available from ftp.che.wisc.edu, or using one of the Debian or RPM packages that are available at other sites. For example, Dirk Eddelbuettel <edd@debian.org> maintains the Debian Octave package and usually has them ready within a day or so of new Octave releases. They are available via the WWW at http://www.debian.org/packages.html. If for some reason you can't (or choose not to) install Octave from one of the binary distributions or by using one of the Debian or RPM packages and something goes wrong, please check the following list to see if your problem is already well known before reporting a bug. Octave compiles, but it won't run --------------------------------- If you can compile Octave, but it crashes with a segmentation fault right away, you probably have incompatible versions of libc and libg++ installed, or you have a version of the dynamic loader, ld.so, that is incompatible with your versions of the libraries, or both. Octave won't even compile ------------------------- If you can't compile Octave, you should first check to see that your compiler and header files are properly installed. Do you have multiple versions of the g++ include files on your system? Are you sure that your copy of g++ is finding the right set? You can find out by compiling a simple C++ program with -v: bash$ cat foo.cc #include <iostream.h> int main (void) { cerr << "yo\n"; return 0; } bash$ g++ -v foo.cc gcc -v foo.cc -lg++ -lstdc++ -lm Reading specs from /usr/lib/gcc-lib/i486-linux/2.7.2/specs gcc version 2.7.2 /usr/lib/gcc-lib/i486-linux/2.7.2/cpp -lang-c++ -v -undef ... #include "..." search starts here: #include <...> search starts here: /usr/lib/g++-include /usr/local/include /usr/i486-linux/include /usr/lib/gcc-lib/i486-linux/2.7.2/include /usr/include End of search list. ... If the location of the correct set of include files is not listed in the search path, then you might be able to fix that with a symbolic link. However, if your version of libg++ was not compiled with your current version of gcc, you are likely to run into more trouble. The linker can't find -lieee ---------------------------- This can happen because your libraries don't match your version of gcc. Some recent Linux distributions don't include a libieee.a file because IEEE support is now the default and the library is no longer needed, but the gcc specs file still adds -lieee to the linker command if gcc is invoked with the -mieeefp flag. I believe that you should be able to fix this by editing the gcc specs file. In it, you should find something like this: %{!shared: %{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} \ %{!ggdb:-lc} %{ggdb:-lg}} changing it to %{!shared: %{p:-lgmon} %{pg:-lgmon} %{!ggdb:-lc} %{ggdb:-lg}} should keep gcc from adding -lieee to the link command. You can find the location of the specs file by running the command gcc -v. If you can't edit the gcc specs file for some reason, another solution that should work is to create an empty libieee.a file in the Octave src directory using the command: ar cq libieee.a NOTE: you should fix this problem (either by editing the specs file or by creating the library) *before* running configure and compiling Octave. Otherwise, configure may incorrectly determine that your system doesn't have support for some IEEE math functions. My system doesn't have g77 -------------------------- A binary release of g77 that should work with gcc 2.7.2 is available from sunsite.unc.edu in the directory /pub/Linux/devel/lang/fortran. There is also a Debian package for g77. Also, g77 is now included as part of egcs (http://www.cygnus.com/egcs). Problems with g77 on Debian 1.2 systems (and possibly others) ------------------------------------------------------------- Your best bet is to upgrade to Debian 1.3 (or some newer version). If you choose not to do that, here are some old tips for working around the problem. The location of the compiler binaries changed, so the g77 0.5.18 package can not be used without modification. The problem is that the Debian package was built for gcc 2.7.2 and not 2.7.2.1 and the f771 backend is installed in the wrong directory. Version 0.5.19 of g77 has just been released. A fixed Debian package may be made available soon. Until then, you can make things work by copying f771 and libf2c.a from /usr/lib/gcc-lib/i486-linux/2.7.2 to /usr/lib/gcc-lib/i486-linux/2.7.2.1. Upgrading your compiler and libraries ------------------------------------- Installing libg++ on a Linux system is not as simple as it should be, because libg++ shares some basic I/O code with the Linux C library, and they must be compatible. You should get and read the release notes for the compiler and libraries. If you decide to install versions of the libraries that are older (or newer) than the ones you already have, you should follow the directions in the release notes carefully. I/O in dynamically loaded .oct files doesn't work ------------------------------------------------- If Octave prints things like `%.-1e' instead of numbers when you use a dynamically linked .oct file, you probably need to create shared versions of the Octave libraries. To do that, configure Octave with --enable-shared, recompile, and reinstall. If you have comments or suggestions for this document, please contact bug-octave@bevo.che.wisc.edu. John W. Eaton jwe@bevo.che.wisc.edu University of Wisconsin-Madison Department of Chemical Engineering Tue Feb 3 13:08:02 1998
Octave has been ported to Windows NT and Windows 95 using the beta 18 release of the Cygnus gnu-win32 tools. If you would like to volunteer to work on improving this port, please contact bug-octave@bevo.che.wisc.edu. The directory ftp://ftp.che.wisc.edu/pub/octave/BINARIES/gnu-win32 contains a binary distribution of Octave for Windows NT/95 along with installation instructions. Unless you are interested in doing some hacking, you should use the binary releases. Here is a list of current problems (and workarounds, where available). * To compile and install Octave on a Windows NT/95 system, you will need to get the beta 18 release of the gnu-win32 tools. They are available from ftp://ftp.cygnus.com/pub/gnu-win32. * There is a conflict between /gnu-win32/b18/include/g++/String.h and /gnu-win32/b18/H-i386-cygwin32/i386-cygwin32/include/string.h. You should rename or remove /gnu-win32/b18/include/g++/String.h. (These file names assume that you have installed the gnu-win32 tools in /gnu-win32/b18). * You will need to have f2c and libf2c.a or g77 installed. I would recommend using g77. Mumit Khan has directions for building g77 at http://www.xraylith.wisc.edu/~khan/software/gnu-win32/g77.html. Another solution is to use egcs, which includes g77. The egcs compiler is available from http://www.cygnus.com/egcs. * You will also need a termcap library. The GNU termcap library seems to work. You can get it from any GNU archive site, including ftp://ftp.gnu.org/pub/gnu/termcap-1.3.tar.gz. * Octave requires gnuplot for plotting, but the normal Windows version of gnuplot will not work because it only reads from the GUI and refuses to read input from stdin. Mumit Khan has written a patch that fixes the problem, but the gnuplot license does not allow us to distribute modified versions of gnuplot in binary form. The patch is available from http://www.xraylith.wisc.edu/~khan/software/gnu-win32. * If Octave takes a long time to find function files, you may have to modify your LOADPATH to avoid device names specified using the `//DEV/subdir' syntax. To map the D: drive (for example) to /D_DRIVE, do the following: cd / mkdir /D_DRIVE mount d: /D_DRIVE Then you can set your LOADPATH to include /D_DRIVE/subdir instead of //d/subdir. If you know of solutions for any of the problems mentioned above, please contact bug-octave@bevo.che.wisc.edu. More information about the gnu-win32 project is available via the WWW at http://www.cygnus.com/gnu-win32. John W. Eaton jwe@bevo.che.wisc.edu University of Wisconsin-Madison Department of Chemical Engineering Sat Feb 14 13:12:19 1998
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.