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.