Brian,

I need your input.  Debian is switching to passing '-Wl,--as-needed' to the
linker, and this seems to break the split between the gsl and gslcblas
library files.  A case in point is cited below and at 
        http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=456872
where qtiplot failes with the command

   g++ -Wl,--as-needed -o qtiplot ../tmp/qtiplot/ApplicationWindow.o
   [... dozen of file reference removed for email ...]
   -L/usr/X11R6/lib -L/usr/lib -lmuparser -lqwtplot3d-qt4 -lqwt-qt4 -lgsl
   -lgslcblas -lorigin -lz -lpython2.4 -lm -lQtAssistantClient -lpthread -lGLU
   --lGL -lQtSvg -lQt3Support -lQtOpenGL -lQtGui -lQtNetwork -lQtCore

As you can see, -lgsl and -lgslcblas are both provided, yet symbols are not
resolved, leading to

   > /usr/lib/libgsl.so: undefined reference to `cblas_zher2k'
   > /usr/lib/libgsl.so: undefined reference to `cblas_strsv'
   > /usr/lib/libgsl.so: undefined reference to `cblas_zdotc_sub'
   [ many more of these ]

Can you see a way forward on this?  Is is maybe a question of link order, ie
could -lgslcblas -lgsl be an answer?

Dirk

On 18 December 2007 at 14:07, Aurelien Jarno wrote:
| Dirk Eddelbuettel a écrit :
| > On 18 December 2007 at 12:03, Aurelien Jarno wrote:
| > | Package: libgsl0ldbl
| > | Version: 1.10-2
| > | Severity: serious
| > | 
| > | libgsl is using symbols from libcblas.so, but is not linked with it. That
| > | breaks at link time when -Wl,--as-needed is used, which is now the
| > | default for programs using qmake.
| > 
| > AFAIK that that is a feature as the _binaries_ building against GSL can use
| > Atlas or the native blas:
| 
| How is that practically done? Does both libraries have the same ABI?
| 
| > [EMAIL PROTECTED]:~> ldd /usr/bin/gsl-histogram
| >         libgsl.so.0 => /usr/lib/libgsl.so.0 (0xb7def000)
| >         libgslcblas.so.0 => /usr/lib/libgslcblas.so.0 (0xb7dbd000)
| >         libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7d97000)
| >         libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7c4a000)
| >         /lib/ld-linux.so.2 (0xb7fd5000)
| > [EMAIL PROTECTED]:~> ldd -r /usr/bin/gsl-histogram
| >         libgsl.so.0 => /usr/lib/libgsl.so.0 (0xb7dc5000)
| >         libgslcblas.so.0 => /usr/lib/libgslcblas.so.0 (0xb7d93000)
| >         libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7d6d000)
| >         libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7c20000)
| >         /lib/ld-linux.so.2 (0xb7fab000)
| 
| The problem does not appear at runtime, but at link time.
| 
| > Also note
| > 
| > [EMAIL PROTECTED]:~> gsl-config --libs
| > -L/usr/lib -lgsl -lgslcblas -lm
| > [EMAIL PROTECTED]:~>                       
| 
| Unfortunately it is not enough when built with -Wl,--as-needed. If the
| binaries does not uses any cblas symbol, the link fails. See for example
| bug#456872.
| 
| > Isn't what you're asking for is sticking libgslcblas back into GSL?  
Upstream
| > would disagree.
| 
| If gsl uses symbols from cblas, it has to be linked with it. In case you
| want to be able to use two different implementations of blas, I guess
| the best is too ship two flavour of gsl.
| 
| -- 
|   .''`.  Aurelien Jarno                   | GPG: 1024D/F1BCDB73
|  : :' :  Debian developer           | Electrical Engineer
|  `. `'   [EMAIL PROTECTED]         | [EMAIL PROTECTED]
|    `-    people.debian.org/~aurel32 | www.aurel32.net

-- 
Three out of two people have difficulties with fractions.


Reply via email to