Package: libtool
Version: 1.5.26-1
Severity: normal

I've an automake/libtool project where I build a library. This library
uses pthread functions so it needs to be linked against (dynamic
library).
To find the flags to use to be linked against the libpthread, I use
the ACX_PTHREAD m4 macro (from the autoconf-archive package).
It finds that all is needed is the FLAGS "-pthread"

However, libtool invoque the g++ linker with the -nostdlib flags that
render the -pthread flags ignored.
How can this be avoided ?
(for now, I've disabled the ACX_MACRO on linux and used the hard coded
-lpthread flags but I do not find this really portable...)


Here is some examples to illustrate what I said:

The fact that libtool use add -nostdlib when it calls the real linker
(g++ here)

[EMAIL PROTECTED]:~/travail/Recherche/KAAPI/git/build$ /bin/sh ./libtool 
--tag=CXX  --mode=link g++  -g -O2 -version-info 0:0:0  -o libkaapi.la -rpath 
/home/vdanjean/kaapi/lib  utils/libkaapiutils.la kernel/libkaapicore.la 
rfo/libkaapirfo.la dfg/libkaapidfg.la network/libkaapinet.la ws/libkaapiws.la 
api-atha/libatha.la st/libkaapisched.la -pthread
rm -fr  .libs/libkaapi.la .libs/libkaapi.lai .libs/libkaapi.so 
.libs/libkaapi.so.0 .libs/libkaapi.so.0.0.0
g++ -shared -nostdlib /usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crti.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/crtbeginS.o  -Wl,--whole-archive 
utils/.libs/libkaapiutils.a kernel/.libs/libkaapicore.a rfo/.libs/libkaapirfo.a 
dfg/.libs/libkaapidfg.a network/.libs/libkaapinet.a ws/.libs/libkaapiws.a 
api-atha/.libs/libatha.a st/.libs/libkaapisched.a -Wl,--no-whole-archive -lrt 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib 
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../.. -lstdc++ -lm -lc 
-lgcc_s /usr/lib/gcc/i486-linux-gnu/4.2.3/crtendS.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crtn.o  -pthread -Wl,-soname 
-Wl,libkaapi.so.0 -o .libs/libkaapi.so.0.0.0
(cd .libs && rm -f libkaapi.so.0 && ln -s libkaapi.so.0.0.0 libkaapi.so.0)
(cd .libs && rm -f libkaapi.so && ln -s libkaapi.so.0.0.0 libkaapi.so)
creating libkaapi.la
(cd .libs && rm -f libkaapi.la && ln -s ../libkaapi.la libkaapi.la)
[EMAIL PROTECTED]:~/travail/Recherche/KAAPI/git/build$ objdump -x
.libs/libkaapi.so.0.0.0 | grep NEEDED | grep pthread
[EMAIL PROTECTED]:~/travail/Recherche/KAAPI/git/build$ /bin/sh ./libtool 
--tag=CXX  --mode=link g++  -g -O2 -version-info 0:0:0  -o libkaapi.la -rpath 
/home/vdanjean/kaapi/lib  utils/libkaapiutils.la kernel/libkaapicore.la 
rfo/libkaapirfo.la dfg/libkaapidfg.la network/libkaapinet.la ws/libkaapiws.la 
api-atha/libatha.la st/libkaapisched.la -lpthread
rm -fr  .libs/libkaapi.la .libs/libkaapi.lai .libs/libkaapi.so 
.libs/libkaapi.so.0 .libs/libkaapi.so.0.0.0
g++ -shared -nostdlib /usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crti.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/crtbeginS.o  -Wl,--whole-archive 
utils/.libs/libkaapiutils.a kernel/.libs/libkaapicore.a rfo/.libs/libkaapirfo.a 
dfg/.libs/libkaapidfg.a network/.libs/libkaapinet.a ws/.libs/libkaapiws.a 
api-atha/.libs/libatha.a st/.libs/libkaapisched.a -Wl,--no-whole-archive -lrt 
-lpthread -L/usr/lib/gcc/i486-linux-gnu/4.2.3 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib 
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../.. -lstdc++ -lm -lc 
-lgcc_s /usr/lib/gcc/i486-linux-gnu/4.2.3/crtendS.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crtn.o  -Wl,-soname 
-Wl,libkaapi.so.0 -o .libs/libkaapi.so.0.0.0
(cd .libs && rm -f libkaapi.so.0 && ln -s libkaapi.so.0.0.0 libkaapi.so.0)
(cd .libs && rm -f libkaapi.so && ln -s libkaapi.so.0.0.0 libkaapi.so)
creating libkaapi.la
(cd .libs && rm -f libkaapi.la && ln -s ../libkaapi.la libkaapi.la)
[EMAIL PROTECTED]:~/travail/Recherche/KAAPI/git/build$ objdump -x
.libs/libkaapi.so.0.0.0 | grep NEEDED | grep pthread
  NEEDED      libpthread.so.0
[EMAIL PROTECTED]:~/travail/Recherche/KAAPI/git/build$ 


The fact that g++ ignore -pthread when -nostdlib is present :

[EMAIL PROTECTED]:/tmp$ cat toto.c 
int main() {return 0; }
[EMAIL PROTECTED]:/tmp$ g++ -c -Wall toto.c 
[EMAIL PROTECTED]:/tmp$ g++ -v  -shared   toto.o -pthread  -lrt -Wl,-soname 
-Wl,libkaapi.so.0 -o toto 
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v 
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr 
--enable-shared --with-system-zlib --libexecdir=/usr/lib 
--without-included-gettext --enable-threads=posix --enable-nls 
--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 
--enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr 
--disable-libmudflap --enable-targets=all --enable-checking=release 
--build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.2.3 (Debian 4.2.3-1)
 /usr/lib/gcc/i486-linux-gnu/4.2.3/collect2 --eh-frame-hdr -m elf_i386 
--hash-style=both -shared -o toto 
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crti.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/crtbeginS.o 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3 -L/usr/lib/gcc/i486-linux-gnu/4.2.3 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib 
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../.. toto.o -lrt 
-soname libkaapi.so.0 -lstdc++ -lm -lgcc_s -lpthread -lc -lgcc_s 
/usr/lib/gcc/i486-linux-gnu/4.2.3/crtendS.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crtn.o
[EMAIL PROTECTED]:/tmp$ objdump -x toto | grep NEEDED | grep pthread
  NEEDED      libpthread.so.0
[EMAIL PROTECTED]:/tmp$ g++ -v -shared -nostdlib 
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crti.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/crtbeginS.o   toto.o -pthread  -lrt 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib 
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../..  -lstdc++ -lm 
-lc -lgcc_s /usr/lib/gcc/i486-linux-gnu/4.2.3/crtendS.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crtn.o  -Wl,-soname 
-Wl,libkaapi.so.0 -o toto 
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v 
--enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr 
--enable-shared --with-system-zlib --libexecdir=/usr/lib 
--without-included-gettext --enable-threads=posix --enable-nls 
--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 
--enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-mpfr 
--disable-libmudflap --enable-targets=all --enable-checking=release 
--build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu
Thread model: posix
gcc version 4.2.3 (Debian 4.2.3-1)
 /usr/lib/gcc/i486-linux-gnu/4.2.3/collect2 --eh-frame-hdr -m elf_i386 
--hash-style=both -shared -o toto -L/usr/lib/gcc/i486-linux-gnu/4.2.3 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib 
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../..  
-L/usr/lib/gcc/i486-linux-gnu/4.2.3 -L/usr/lib/gcc/i486-linux-gnu/4.2.3 
-L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib -L/lib/../lib 
-L/usr/lib/../lib -L/usr/lib/gcc/i486-linux-gnu/4.2.3/../../..  
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crti.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/crtbeginS.o toto.o -lrt -lstdc++ -lm -lc 
-lgcc_s /usr/lib/gcc/i486-linux-gnu/4.2.3/crtendS.o 
/usr/lib/gcc/i486-linux-gnu/4.2.3/../../../../lib/crtn.o -soname libkaapi.so.0
[EMAIL PROTECTED]:/tmp$ objdump -x toto | grep NEEDED | grep pthread
[EMAIL PROTECTED]:/tmp$ 


  Best regards,
    Vincent


-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (990, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 
'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.24-1-686 (SMP w/1 CPU core)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash

Versions of packages libtool depends on:
ii  autotools-dev                 20070725.1 Update infrastructure for config.{
ii  cpp                           4:4.2.2-2  The GNU C preprocessor (cpp)
ii  file                          4.23-2     Determines file type using "magic"
ii  gcc [c-compiler]              4:4.2.2-2  The GNU C compiler
ii  gcc-3.3 [c-compiler]          1:3.3.6-15 The GNU C compiler
ii  gcc-3.4 [c-compiler]          3.4.6-6    The GNU C compiler
ii  gcc-4.1 [c-compiler]          4.1.2-19   The GNU C compiler
ii  gcc-4.2 [c-compiler]          4.2.3-1    The GNU C compiler
ii  libc6-dev [libc-dev]          2.7-8      GNU C Library: Development Librari

Versions of packages libtool recommends:
ii  libltdl3-dev                  1.5.26-1   A system independent dlopen wrappe

-- no debconf information



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to