2602
|
1 Since July 1996, most work on Octave has been done using a Linux |
|
2 system, and a number of people who regularly test Octave snapshot |
3142
|
3 releases also primarily use Linux systems. Because of this, I believe |
|
4 Octave should run reasonably well on most current Linux systems. |
|
5 However, there have been some problems in the past, usually the result |
|
6 of improper installation of compilers or libraries. Sometimes the |
|
7 problems have happened because of a botched upgrade or even a buggy |
|
8 Linux distribution. |
2593
|
9 |
3142
|
10 If you can, you should probably install Octave from one of the binary |
|
11 distributions available from ftp.che.wisc.edu, or using one of the |
|
12 Debian or RPM packages that are available at other sites. For |
3143
|
13 example, Dirk Eddelbuettel <edd@debian.org> maintains the Debian |
|
14 Octave package and usually has them ready within a day or so of new |
|
15 Octave releases. They are available via the WWW at |
3151
|
16 http://www.debian.org/packages.html. |
3142
|
17 |
|
18 If for some reason you can't (or choose not to) install Octave from |
|
19 one of the binary distributions or by using one of the Debian or RPM |
|
20 packages and something goes wrong, please check the following list to |
|
21 see if your problem is already well known before reporting a bug. |
2593
|
22 |
2596
|
23 Octave compiles, but it won't run |
|
24 --------------------------------- |
|
25 |
|
26 If you can compile Octave, but it crashes with a segmentation fault |
|
27 right away, you probably have incompatible versions of libc and libg++ |
|
28 installed, or you have a version of the dynamic loader, ld.so, that is |
|
29 incompatible with your versions of the libraries, or both. |
2593
|
30 |
2596
|
31 Octave won't even compile |
|
32 ------------------------- |
2593
|
33 |
|
34 If you can't compile Octave, you should first check to see that your |
|
35 compiler and header files are properly installed. Do you have |
|
36 multiple versions of the g++ include files on your system? Are you |
2596
|
37 sure that your copy of g++ is finding the right set? You can find out |
|
38 by compiling a simple C++ program with -v: |
|
39 |
|
40 bash$ cat foo.cc |
|
41 #include <iostream.h> |
2663
|
42 int main (void) { cerr << "yo\n"; return 0; } |
2596
|
43 |
|
44 bash$ g++ -v foo.cc |
|
45 gcc -v foo.cc -lg++ -lstdc++ -lm |
|
46 Reading specs from /usr/lib/gcc-lib/i486-linux/2.7.2/specs |
|
47 gcc version 2.7.2 |
|
48 /usr/lib/gcc-lib/i486-linux/2.7.2/cpp -lang-c++ -v -undef ... |
|
49 #include "..." search starts here: |
|
50 #include <...> search starts here: |
|
51 /usr/lib/g++-include |
|
52 /usr/local/include |
|
53 /usr/i486-linux/include |
|
54 /usr/lib/gcc-lib/i486-linux/2.7.2/include |
|
55 /usr/include |
|
56 End of search list. |
|
57 ... |
|
58 |
2597
|
59 If the location of the correct set of include files is not listed in |
|
60 the search path, then you might be able to fix that with a symbolic |
|
61 link. However, if your version of libg++ was not compiled with your |
|
62 current version of gcc, you are likely to run into more trouble. |
2596
|
63 |
2598
|
64 The linker can't find -lieee |
|
65 ---------------------------- |
|
66 |
|
67 This can happen because your libraries don't match your version of |
|
68 gcc. Some recent Linux distributions don't include a libieee.a file |
|
69 because IEEE support is now the default and the library is no longer |
|
70 needed, but the gcc specs file still adds -lieee to the linker command |
|
71 if gcc is invoked with the -mieeefp flag. I believe that you should |
|
72 be able to fix this by editing the gcc specs file. In it, you should |
|
73 find something like this: |
|
74 |
|
75 %{!shared: %{mieee-fp:-lieee} %{p:-lgmon} %{pg:-lgmon} \ |
|
76 %{!ggdb:-lc} %{ggdb:-lg}} |
|
77 |
|
78 changing it to |
|
79 |
|
80 %{!shared: %{p:-lgmon} %{pg:-lgmon} %{!ggdb:-lc} %{ggdb:-lg}} |
|
81 |
|
82 should keep gcc from adding -lieee to the link command. You can find |
|
83 the location of the specs file by running the command gcc -v. |
|
84 |
2601
|
85 If you can't edit the gcc specs file for some reason, another solution |
|
86 that should work is to create an empty libieee.a file in the Octave |
|
87 src directory using the command: |
|
88 |
|
89 ar cq libieee.a |
|
90 |
2608
|
91 NOTE: you should fix this problem (either by editing the specs file or |
|
92 by creating the library) *before* running configure and compiling |
|
93 Octave. Otherwise, configure may incorrectly determine that your |
|
94 system doesn't have support for some IEEE math functions. |
|
95 |
2598
|
96 My system doesn't have g77 |
|
97 -------------------------- |
|
98 |
|
99 A binary release of g77 that should work with gcc 2.7.2 is available |
|
100 from sunsite.unc.edu in the directory /pub/Linux/devel/lang/fortran. |
3142
|
101 There is also a Debian package for g77. Also, g77 is now included as |
|
102 part of egcs (http://www.cygnus.com/egcs). |
2598
|
103 |
2600
|
104 Problems with g77 on Debian 1.2 systems (and possibly others) |
|
105 ------------------------------------------------------------- |
|
106 |
3143
|
107 Your best bet is to upgrade to Debian 1.3 (or some newer version). |
|
108 If you choose not to do that, here are some old tips for working |
|
109 around the problem. |
|
110 |
|
111 The location of the compiler binaries changed, so the g77 0.5.18 |
2600
|
112 package can not be used without modification. The problem is that the |
|
113 Debian package was built for gcc 2.7.2 and not 2.7.2.1 and the f771 |
|
114 backend is installed in the wrong directory. |
|
115 |
|
116 Version 0.5.19 of g77 has just been released. A fixed Debian package |
|
117 may be made available soon. Until then, you can make things work by |
|
118 copying f771 and libf2c.a from /usr/lib/gcc-lib/i486-linux/2.7.2 to |
|
119 /usr/lib/gcc-lib/i486-linux/2.7.2.1. |
|
120 |
2596
|
121 Upgrading your compiler and libraries |
|
122 ------------------------------------- |
|
123 |
2598
|
124 Installing libg++ on a Linux system is not as simple as it should be, |
|
125 because libg++ shares some basic I/O code with the Linux C library, |
|
126 and they must be compatible. You should get and read the release |
|
127 notes for the compiler and libraries. |
|
128 |
2601
|
129 If you decide to install versions of the libraries that are older (or |
|
130 newer) than the ones you already have, you should follow the |
3142
|
131 directions in the release notes carefully. |
2601
|
132 |
2993
|
133 I/O in dynamically loaded .oct files doesn't work |
|
134 ------------------------------------------------- |
|
135 |
|
136 If Octave prints things like `%.-1e' instead of numbers when you use a |
|
137 dynamically linked .oct file, you probably need to create shared |
|
138 versions of the Octave libraries. To do that, configure Octave with |
3142
|
139 --enable-shared, recompile, and reinstall. |
2993
|
140 |
2601
|
141 |
2598
|
142 If you have comments or suggestions for this document, please contact |
|
143 bug-octave@bevo.che.wisc.edu. |
2593
|
144 |
|
145 John W. Eaton |
|
146 jwe@bevo.che.wisc.edu |
|
147 University of Wisconsin-Madison |
|
148 Department of Chemical Engineering |
|
149 |
3143
|
150 Tue Feb 3 13:08:02 1998 |