help-gsl
[Top][All Lists]
Advanced

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

Re: [Help-gsl] Renaming versions of the libraries?


From: Peter Rockett
Subject: Re: [Help-gsl] Renaming versions of the libraries?
Date: Thu, 28 Jan 2010 21:00:54 +0000

>As you found, there's no option for renaming libraries, only programs.

It's not very helpful that configure --help returns this as an option
when it doesn't work!

>The simplest way to avoid conflicts is to build and install to a
different target directory, e.g. ./configure
--prefix=/opt/gsl-1.13-debug

Forgive me but this is not an elegant solution. Having files with the
same names is a recipe for mix-up. In fact, running configure with the
--libdir=/usr/local/lib-dbg option to specify a different install
directory for the libs seems a better bet since you don't get duplicate
copies of the include files, etc.

>The situation is that GNU packages always compile with debugging (-g
-O2) by default...

I have been using GSL for a number of years and this is a revelation to
me! I never knew that. This is indeed a worthy inclusion in the INSTALL
file.

The corollary is: How do you build a release version for production
runs? Can I suggest this too should be added to the INSTALL file as the
release build runs at least 20% faster, methinks.

>This is a commendable philosophy which, unfortunately, does not work in
practice...

I agree with Leo! The default library (-g -O2) does not seem to debug
properly. When I tried stepping into a GSL routine with what I now know
was this configuration, GDB went to line 1, then line 6, then back to
line 2, then 3, then back to 1... I now realise that I got it to work
properly with just the -g option (no -O2 option). I have always regarded
the debug and optimisation options as a dangerous mix, whatever the
compiler. (I seem to recall they are incompatible options in MSVC++? Or
at very least, inlining is ignored in the debug build.)

In fact, I have discovered that giving configure the CFLAGS= option
overrides the the internal '-g -O2' option. So I would suggest building:

1) With CFLAGS='-g' and --libdir=/usr/local/lib-dbg  to get a debug
version installed in /usr/local/lib-dbg 

2) With CFLAGS='-O2' for the release build, and putting this in the
default /usr/local/lib.

(But I still think it's bad practice to have different libraries with
the same names! Can anyone who knows autoconf suggest a solution?)

For information, libgsl.a with the '-O2' option is 2896006 bytes, with
'-g' it's 6527236 bytes, and with '-g -O2' it's 8283822 bytes. NB. The
significant difference the -O2' option makes to the debug build,
presumably (as Leo says) due to extensive inlining.


reply via email to

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