help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: compiling with Sun Studio


From: John Swensen
Subject: Re: compiling with Sun Studio
Date: Wed, 29 Aug 2007 15:45:41 -0400
User-agent: Thunderbird 2.0.0.6 (Macintosh/20070728)

John W. Eaton wrote:
On 29-Aug-2007, John Swensen wrote:

| Here are the errors I am seeing. I am not 100% sure where the GCC4 | compiler we have came from. But here is the --version information
| gcc (GCC) 4.0.2
| Copyright (C) 2005 Free Software Foundation, Inc.
| This is free software; see the source for copying conditions.  There is NO
| warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
| | The compilation error I get is as follows:
| make[2]: Entering directory `/home/jpswensen/src/octave/src'
| making defaults.h from defaults.h.in
| defaults.h is unchanged
| making oct-conf.h from oct-conf.h.in
| oct-conf.h is unchanged
| g++ -I/opt/csw/include -I. -I.. -I../liboctave -I../src | -I../libcruft/misc -DHAVE_CONFIG_H -Wall -W -Wshadow -Wold-style-cast | -g -O2 -rdynamic \
|         -L..  -fPIC -L/opt/csw/lib -o octave \
|         main.o  \
| -L../liboctave -L../libcruft -L../src -R | /opt/lab/octave/cvs_20070827/lib/octave-2.9.13+ \
|         -loctinterp -loctave  -lcruft    \
|              \
|             \
| -lreadline -lncurses -ldl -lz -lm -R/opt/csw/gcc4/lib | -L/opt/csw/gcc4/lib -L/usr/ccs/lib -L/usr/lib -L/opt/csw/lib | -L/opt/csw/gcc4/lib/gcc/sparc-sun-solaris2.8/4.0.2 -L/usr/ccs/bin | -L/opt/csw/gcc4/lib/gcc/sparc-sun-solaris2.8/4.0.2/../../.. -lz | -lgfortranbegin -lgfortran -lm -lgcc_s
| g++: unrecognized option `-rdynamic'
| ld: fatal: file /opt/csw/lib/libgcc_s.so: version `GCC_4.0.0' does not | exist:
|         required by file ../src/liboctinterp.so
| ld: fatal: File processing errors. No output written to octave
| collect2: ld returned 1 exit status
| make[2]: *** [octave] Error 1
| make[2]: Leaving directory `/home/jpswensen/src/octave/src'
| make[1]: *** [src] Error 2
| make[1]: Leaving directory `/home/jpswensen/src/octave'
| make: *** [all] Error 2
| | The strange thing about this is that the libgcc_s.so that is in | /opt/csw/lib does not correspond to the GCC4 compiler. The libgcc_s.so | that corresponds to GCC4 is in /opt/csw/gcc4/lib. I am not quite sure | why it is using the wrong one. I am by no means a autotools guru, so I | am not sure if it is something with how things got configured. In order | to make the build process use the GCC4 tools, I simply added them to my | PATH in front of everything else. I did add LDFLAGS=-L/opt/csw/lib to | the configure line in order to get libreadline included properly. Maybe | I need to use LDFLAGS="-L/opt/csw/gcc4/lib -L/opt/csw/lib" toforce it to | use the right libgcc_s.so. I was under the impression that it should | always use the libgcc_s.so that corresponds the | <path_of_the_compiler>/../lib/libgcc_s.so. | | Any suggestions?

What is the definition of FLIBS in Makeconf?  I'm guessing it is

   -lgfortranbegin -lgfortran -lm -lgcc_s

Why does it include -lgcc_s?  I think Octave is using the autoconf
macros for determining what Fortran libraries to use, so that might be
a place to start.  Also, how did "-L/opt/csw/lib" end up in the link
flags, and why is the gcc_s library installed there?

jwe

FLIBS = -R/opt/csw/gcc4/lib -L/opt/csw/gcc4/lib -L/usr/ccs/lib -L/usr/lib -L/opt/csw/lib -L/opt/csw/gcc4/lib/gcc/sparc-sun-solaris2.8/4.0.2 -L/usr/ccs/bin -L/opt/csw/gcc4/lib/gcc/sparc-sun-solaris2.8/4.0.2/../../.. -lz -lgfortranbegin -lgfortran -lm -lgcc_s

I tried to remove the "-lgcc_s" at the end of the linking for liboctinterp.so and for the binary of octave, yet still get the same error about libgcc_s.so.

As for /opt/csw/lib being in the link flags, I had to specify LDFLAGS="-L/opt/csw/lib" in the call to configure in order to point to libreadline. I suppose I could have used the --with-readline=/opt/csw/lib instead. Does that really make a big difference? I think either way it will put "-L/opt/csw/lib" in the link command.

I'm not sure why there is a libgcc_s.so in the /opt/csw/lib directory. I think it is because the CSW package system installs 2 compilers: GCC3 and GCC4. It puts GCC3 in both /opt/csw/bin and in /opt/csw/gcc3/bin, and GCC4 in /opt/csw/gcc4/bin. So this libgcc_s.so probably corresponds to GCC3.

John Swensen


reply via email to

[Prev in Thread] Current Thread [Next in Thread]