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.