Peter Samuelson peter at
Sun Mar 5 11:50:01 GMT 2000

[itsore08 at]
> I'm trying to compile TNG on AIX 4.3.3, but just can't make it go. :(

As Elrond says, compiling shared libraries on AIX is serious black
magic.  AIX 4.2+ only makes it worse.  It seems IBM is bent on
retrofitting ELF-like features into their dynamic linker without giving
up XCOFF format.  libbfd from GNU binutils cowers in fear, and libtool
makes a valiant attempt but falls short.

They tell you to use `makeC++SharedLib' from xlC, which is supposed to
do all the hard stuff.  Unfortunately, if VAC comes with
`makeC++SharedLib', I can't find it.

I once tried to fix libtool with regard to AIX.  Gave up.  Not only do
I not understand the AIX end well enough, I also had trouble figuring
out the libtool end.  More recently I came across a shell script
PostgreSQL uses for AIX shared library stuff.  I still don't think it
gets everything right but at least it tries.  Armed with this, I might
try my hand at libtool again some day.  Or not.

> > /usr/include/rpcsvc/yp_prot.h:342: warning: `struct ypall_callback'
> declared inside parameter list
> >
> > /usr/include/rpcsvc/yp_prot.h:342: warning: its scope is only this
> definition or declaration, which is probably not what you want.

These are harmless warnings caused by bugs in the AIX header files.
Every time I come across one of these, I shut gcc up like so:

  cp /usr/include/rpcsvc/yp_prot.h /usr/local/lib/gcc-lib/powerpc-ibm-aix4.3.2.0/2.95.2/include/rpcsvc/
  vi /usr/local/lib/gcc-lib/powerpc-ibm-aix4.3.2.0/2.95.2/include/rpcsvc/yp_prot.h

...and add, somewhere near the top of the file,

  struct ypall_callback; /* shut gcc up */

AIX header files are full of these bugs.  Basically they aren't
including other header files they depend on.  Note that IBM's compiler
spits out similar warnings, so it's not a gcc issue.

> > Linking shared library bin/
> > ld: 0711-934 SEVERE ERROR: Cannot create the output file:
> libs/
> >         ld:open() No such file or directory
> > collect2: ld returned 12 exit status
> > make: 1254-004 The error code from the last command is 1.

Not sure about the exact error there but it's probably some of the
shared library voodoo that libtool can't quite figure out.

> > Compiling rpc_client/cli_login.c with libtool
> > "include/sam.h", line 31.41: 1506-243 (S) Value of enumeration constant
> must be
> > in range of signed integer.
> > make: 1254-004 The error code from the last command is 1.

I posted a patch for this recently to the main samba list.  A kludge,
really, and untested, but it should work.  As I said at the time, this
is a truly evil hack (assumes enum == 32-bit two's complement); the
Right Way is probably to convert the enum to a set of #defines.


--- source/include/sam.h	Fri Feb  4 12:58:16 2000
+++ source/include/sam.h.hack	Wed Mar  1 00:29:57 2000
@@ -28,7 +28,7 @@
   NTDS_GROUP_TYPE_GLOBAL_GROUP        = 0x00000002,
 /* userAccountFlags */

More information about the samba-technical mailing list