Kerberos linking on AIX 6.1

Ken Raeburn raeburn at MIT.EDU
Fri May 15 10:19:17 EDT 2009


On May 15, 2009, at 07:11, miguel.sanders at arcelormittal.com wrote:
> Moreover, since you're on AIX, adding -lsomelib as a XLC argument  
> expects to find an archive libsomelib.a and not an object file.
> So you will have to archive the shared libraries with ar.
>
> F.e.
> The built created the shared library gssapi_krb5.so (which is in AIX  
> a bad name for a shared library, all libraries (static/shared)  
> should end with .o)
> Archive it:
> # ar -v -q gssapi_krb5.a gssapi_krb5.so

If I recall correctly, earlier versions of AIX at least had a compiler  
option telling it to look for the .so files instead.  However, that  
would mean that you always have to use this option when building  
application programs as well.

Once upon a time, we built the shared libraries with .a suffixes using  
ar as above.  This was changed some time ago -- I think maybe to let  
us build both static and shared versions of the libraries at once,  
though I'm not sure that was the reason, and we don't support building  
static versions of the installed libraries on any platform any more.   
So it may have been a mistake, and it might be a good idea to consider  
reverting that change, though it would mean another ABI change on  
AIX.  Straightening this out requires AIX expertise (or at least the  
ability to read the documentation plus the experience to say which  
approach work better overall for AIX developers and system  
maintainers, factoring in backwards compatibility and versioning and  
such) plus hardware to test changes on.  MIT's test AIX machine died  
some years ago, and it was running an old version of the OS even then.

I assume you meant to write "libgssapi_krb5" above?  For shared  
libraries, we build the individual object files with a .so suffix for  
mostly historical reasons -- so static and shared libraries could be  
built in the same directory, on platforms where they have to be  
compiled with different options (unlike AIX).  So "gssapi_krb5.so" is  
the object file compiled from "gssapi_krb5.c"; libgssapi_krb5.* is the  
linked or archive forms of the library, and the similarity to the name  
of one of the source/object files is accidental.

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



More information about the Kerberos mailing list