Linking to pthread library: undefined reference

Frank Behrens frank at
Fri Jun 15 17:14:20 UTC 2007


I could not find any information in the developers handbook, so I ask here for support.

I try to link an milter (sendmail mail filter) test application and get an error I do not 
understand. I use FreeBSD 6.2-STABLE-200705211513 with an userland from May-03.
In my Makefile I have:
CFLAGS+=	-I/usr/local/include -std=c99 -pthread -v
LDADD+=		-L/usr/local/lib -lmilter

This gives linker command:
cc -O2 -pipe -fno-strict-aliasing -march=pentium4 -I/usr/local/include -std=c99 -pthread -v -g -
DDEBUG=1 -O1 -fno-omit-frame-pointer -Wsystem-headers -Wall -Wno-format-y2k -W -
Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-
type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter -
Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls  -o fmilter fmilter.o -
L/usr/local/lib -lmilter
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.6 [FreeBSD] 20060305
 /usr/bin/ld -V -dynamic-linker /libexec/ -o fmilter /usr/lib/crt1.o /usr/lib/crti.o 
/usr/lib/crtbegin.o -L/usr/local/lib -L/usr/lib fmilter.o -lmilter -lgcc -lpthread -lc -lgcc 
/usr/lib/crtend.o /usr/lib/crtn.o
GNU ld version 2.15 [FreeBSD] 2004-05-23
  Supported emulations:
/usr/lib/ undefined reference to `pthread_detach'

In my opinion the symbol should be found in
/usr/lib/ -> /lib/

When I look into the libraries I see
> objdump -T /usr/lib/ | fgrep detach
00000000      D  *UND*  00000000 pthread_detach

> objdump -T /usr/lib/ | fgrep pthread_detach
000077d4  w   DF .text  000003a4  LIBTHREAD_1_0 pthread_detach
000077d4 g    DF .text  000003a4  LIBTHREAD_1_0 _pthread_detach

Did I make something wrong? I guess yes, but what?

Thanks for your help and best regards,
Frank Behrens, Osterwieck, Germany
PGP-key 0x5B7C47ED on public servers available.

More information about the freebsd-threads mailing list