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 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 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