Re: 8.0.0beta1: -lpthread missing - Mailing list pgsql-bugs

From Martin Münstermann
Subject Re: 8.0.0beta1: -lpthread missing
Date
Msg-id 4119D11C.5010206@betrusted.com
Whole thread Raw
In response to Re: 8.0.0beta1: -lpthread missing  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-bugs
Hello!

Bruce Momjian wrote:
> Robert Treat wrote:
>
>>>`pthread_once'
>>>../../../src/interfaces/libpq/libpq.so: undefined reference to
>>>`pthread_key_create'
>>>../../../src/interfaces/libpq/libpq.so: undefined reference to
>>>`pthread_setspecific'
>>>collect2: ld returned 1 exit status
>>>
>>>
>>>
>>>Please describe a way to repeat the problem.   Please try to provide a
>>>concise reproducible example, if at all possible:
>>>----------------------------------------------------------------------
>>># ./configure --prefix=/opt/postgresql-800beta1 --enable-thread-safety
>>># make
>>>
>>>
>>>If you know how this problem might be fixed, list the solution below:
>>>---------------------------------------------------------------------
>>>The binaries must be linked with pthread (-lpthread).
>>>
>>
>>Can you take a look at the thread below and report back if that fixes your
>>problem?  http://archives.postgresql.org/pgsql-hackers/2004-08/msg00525.php

Yes, adding -lpthread to PTHREAD_LIBS and rebuilding solved the problem.
Note: when doing so, libpq.so is built with -lpthread, PTHREAD_LIBS is
*not* used in the makefiles of the client binaries like initdb and psql.

> I looked at that.  The line that does the tests is in
> config/acx_pthread.m4:
>
>     acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread
>     -pthreads -mthreads pthread --thread-safe -mt pthread-conf ig"
>
> so you should see that list tried.  Does that help?
>
> I am majorly concerned that Slackware has the same problem as Unixware,
> meaning that if you use threading in the lib, you now need the flags on
> every applicaiton that uses the lib.

At least on debian this is not the case (see above):
-lpthread is used when building libpq.so.3.2.
So the shared library contains a dependency on libpthread.so.
Then the client apps do not need a -lpthread at build time. The dynamic
linker will resolve the dependency on libpthread.so (via libpq.so) at
runtime.

Regards, Martin



pgsql-bugs by date:

Previous
From: Holger Klawitter
Date:
Subject: typo in postgresql.conf
Next
From: Adam Witney
Date:
Subject: Re: OSX problem with make check...