pthreads/dlopen issue when building krb-1.6.3 on AIX 6.1?

Ken Raeburn raeburn at MIT.EDU
Wed May 13 16:35:55 EDT 2009


On May 13, 2009, at 15:14, Luke Scharf wrote:
> Here is the relevant section of the log:
>
>    configure:4930: enabling thread support
>    configure:5131: checking for the pthreads library -lpthreads
>    configure:5169: gcc -o conftest -g -O2 -Wall -Wmissing-prototypes  
> -Wcast-qual  -Wcast-align -Wconversion -Wshadow -pedantic     
> conftest.c -lpthreads  >&5
>    In file included from /usr/include/sys/cred.h:49,
>                     from /usr/include/sys/thread.h:43,
>                     from /usr/include/sys/ptrace.h:28,
>                     from /usr/include/sys/proc.h:48,
>                     from /usr/include/sys/pri.h:43,
>                     from /usr/include/sys/sched.h:38,
>                     from /usr/include/sched.h:51,
>                     from /usr/include/pthread.h:64,
>                     from conftest.c:34:
>    /usr/include/sys/secattr.h:49: error: expected specifier- 
> qualifier-list before 'rid_t'

This sounds like the configure script found GCC on the system, but GCC  
can't compile some of the system headers.  (Or, maybe certain headers  
require the prior inclusion of certain other headers that the tests  
aren't set up to do.)  If you want to keep a broken GCC installation  
on your system, use the CC=... option to configure to force it to use  
the IBM compiler.

The main autoconf code for testing thread compilation options is in  
src/config/ac-archive/acx_pthread.m4.

I'm curious what fails when you try to disable thread support and  
build it, but if it's just another case of GCC not handling system  
headers, you might follow that up on a GCC support list.  (From my  
experience with GCC, I'd suggest some things to check for at first:  
Install location for GCC was changed somehow so it lost track of where  
to find its "fixed" copy of some system headers that are adjusted to  
remove constructs that depend on the native compiler.  An old GCC  
installation predates a major OS upgrade that changed system headers  
in a significant way, leading to inconsistencies.  An old version of  
GCC where the header-fixing script didn't know about some interesting  
quirks added in the latest OS rev.)

Also, make sure you're using a fresh build tree (or a clean source  
tree, if you're building inside the source tree) when you switch  
compilers.  For performance, the configure script caches some  
information about the build environment so it doesn't have to be re- 
checked if the script is run again, but if you've switched compilers  
that information may be invalid.

-- 
Ken Raeburn / raeburn at mit.edu / no longer at MIT Kerberos Consortium



More information about the Kerberos mailing list