[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
libtool and FreeBSD.
From: |
Mark Andrews |
Subject: |
libtool and FreeBSD. |
Date: |
Thu, 15 Jun 2006 12:40:50 +1000 |
libtool 1.5.22 fails to link a simple threaded executable
under FreeBSD. -pthread is a compiler directive not a library.
Note also the FreeBSD porters handbook explicitly recommends
against linking in -lpthread or -lc_r directly.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/dads-pthread.html
Note: specifying -lpthread on the command line will also allow the
linking to complete but should not be required. This change supports
specifying both -pthread and -lpthread.
Mark
Without patch:
/bin/sh /home/marka/cvs/bind9-xx/libtool --mode=compile gcc -pthread
-I/home/marka/cvs/bind9-xx -I/home/marka/cvs/bind9-xx/lib/dns/include
-I../../lib/dns/include -I/home/marka/cvs/bind9-xx/lib/isc/include
-I../../lib/isc -I../../lib/isc/include -I../../lib/isc/unix/include
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith
-fno-strict-aliasing -c genrandom.c
gcc -pthread -I/home/marka/cvs/bind9-xx
-I/home/marka/cvs/bind9-xx/lib/dns/include -I../../lib/dns/include
-I/home/marka/cvs/bind9-xx/lib/isc/include -I../../lib/isc
-I../../lib/isc/include -I../../lib/isc/unix/include
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith
-fno-strict-aliasing -c genrandom.c -fPIC -DPIC -o .libs/genrandom.o
gcc -pthread -I/home/marka/cvs/bind9-xx
-I/home/marka/cvs/bind9-xx/lib/dns/include -I../../lib/dns/include
-I/home/marka/cvs/bind9-xx/lib/isc/include -I../../lib/isc
-I../../lib/isc/include -I../../lib/isc/unix/include
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith
-fno-strict-aliasing -c genrandom.c -o genrandom.o >/dev/null 2>&1
/bin/sh /home/marka/cvs/bind9-xx/libtool --mode=link gcc -pthread -g -O2 -o
genrandom genrandom.lo
rm -f .libs/genrandom.nm .libs/genrandom.nmS .libs/genrandom.nmT
creating .libs/genrandomS.c
extracting global C symbols from `.libs/genrandom.o'
(cd .libs && gcc -pthread -c -fno-builtin "genrandomS.c")
rm -f .libs/genrandomS.c .libs/genrandom.nm .libs/genrandom.nmS
.libs/genrandom.nmT
gcc -g -O2 -o genrandom .libs/genrandom.o .libs/genrandom.o
.libs/genrandom.o(.text+0x0): In function `main':
/home/marka/cvs/bind9-xx/bin/tests/genrandom.c:29: multiple definition of `main'
.libs/genrandom.o(.text+0x0):/home/marka/cvs/bind9-xx/bin/tests/genrandom.c:29:
first defined here
rm -f .libs/genrandomS.o
*** Error code 1
With patch:
/bin/sh /home/marka/cvs/bind9-xx/libtool --mode=compile gcc -pthread
-I/home/marka/cvs/bind9-xx -I/home/marka/cvs/bind9-xx/lib/dns/include
-I../../lib/dns/include -I/home/marka/cvs/bind9-xx/lib/isc/include
-I../../lib/isc -I../../lib/isc/include -I../../lib/isc/unix/include
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith
-fno-strict-aliasing -c genrandom.c
gcc -pthread -I/home/marka/cvs/bind9-xx
-I/home/marka/cvs/bind9-xx/lib/dns/include -I../../lib/dns/include
-I/home/marka/cvs/bind9-xx/lib/isc/include -I../../lib/isc
-I../../lib/isc/include -I../../lib/isc/unix/include
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith
-fno-strict-aliasing -c genrandom.c -fPIC -DPIC -o .libs/genrandom.o
gcc -pthread -I/home/marka/cvs/bind9-xx
-I/home/marka/cvs/bind9-xx/lib/dns/include -I../../lib/dns/include
-I/home/marka/cvs/bind9-xx/lib/isc/include -I../../lib/isc
-I../../lib/isc/include -I../../lib/isc/unix/include
-I../../lib/isc/pthreads/include -I../../lib/isc/x86_32/include
-I/home/marka/cvs/bind9-xx/lib/isccfg/include -I../../lib/isccfg/include
-I/home/marka/cvs/bind9-xx/lib/lwres/include -I../../lib/lwres/unix/include
-I../../lib/lwres/include -D_REENTRANT -D_THREAD_SAFE -g -O2 -W -Wall
-Wmissing-prototypes -Wcast-qual -Wwrite-strings -Wformat -Wpointer-arith
-fno-strict-aliasing -c genrandom.c -o genrandom.o >/dev/null 2>&1
/bin/sh /home/marka/cvs/bind9-xx/libtool --mode=link gcc -pthread -g -O2 -o
genrandom genrandom.lo
gcc -pthread -g -O2 -o genrandom .libs/genrandom.o
% ldd genrandom
genrandom:
libpthread.so.2 => /usr/lib/libpthread.so.2 (0x28074000)
libc.so.6 => /lib/libc.so.6 (0x28099000)
%
Index: bind9/ltmain.sh
diff -u bind9/ltmain.sh:1.11 bind9/ltmain.sh:1.11.434.1
--- bind9/ltmain.sh:1.11 Thu Dec 2 22:58:01 2004
+++ bind9/ltmain.sh Thu Jun 15 00:49:49 2006
@@ -1488,9 +1488,17 @@
;;
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
- case "$archive_cmds" in
- *"\$LD"*) ;;
- *) deplibs="$deplibs $arg";;
+ case $host in
+ *-*-freebsd*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ *)
+ case "$archive_cmds" in
+ *"\$LD"*) ;;
+ *) deplibs="$deplibs $arg";;
+ esac
+ ;;
esac
continue
;;
--
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE: +61 2 9871 4742 INTERNET: address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- libtool and FreeBSD.,
Mark Andrews <=