RE: Lessons learned on how to build 7.0.2 on AIX 4.x

From: "Darren King" <darrenk(at)insightdist(dot)com>
To: <pgsql-hackers(at)hub(dot)org>
Subject: RE: Lessons learned on how to build 7.0.2 on AIX 4.x
Date: 2000-07-07 19:42:30
Message-ID: NDBBJNEIGLIPLCHCMANLIEANCEAA.darrenk@insightdist.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> > lpgsql.exp
> > ld -H512 -bM:SRE -bI:../../../backend/postgres.imp -bE:libplpgsql.exp -o
> > libplpg
> > sql.so libplpgsql.a -lPW -lcrypt -lld -lnsl -ldl -lm -lcurses -lc
> > ld: 0711-327 WARNING: Entry point not found: __start
> > ld: 0711-317 ERROR: Undefined symbol: CurrentMemoryContext
> > ld: 0711-317 ERROR: Undefined symbol: .MemoryContextAlloc
> > ld: 0711-317 ERROR: Undefined symbol: .MemoryContextFree
> [more of that]
>
> Well, yes, these symbols are undefined within plpgsql. They are supposed
> to be resolved when you load plpgsql into the server at runtime. Now I am
> venturing a guess here that this postgres.imp file is supposed to contain
> a list of symbols that are defined by the postmaster and that the
> dynamically loadable modules such as plpgsql should not worry about, but
> as we saw, this file is not being created correctly. (Perhaps you should
> try to move it back to src/backend for the purposes of building plpgsql.
> That would at least give it a chance of finding the file.)

Exactly that...postgres.imp contains a list of symbols that are available
for modules to use to resolve in their code.

The script src/backend/port/aix/mkldexport.sh gathers the symbols from
postgres.o. Then that list is given to the linker via -bE when making the
executable to allow those symbols to be used by external modules. When
compiling the other modules, the linker needs to get that file with -bI to
tell it that any unresolved symbols that are in postgres.imp will be in the
postgres exectable.

Did you get it to compile without munging the order of the #includes? On my
4.1.5 system, postgres.h has to the first #include file. Seems there are
two different prototypes for getopt in the aix system includes. If unistd.h
or math.h are included *before* postgres.h, the bogus prototype is
encountered first. There's also a function somewhere in libpq that has an
unsigned char parameter that is at odds with the -qchars=signed flag in the
aix compile.

These are really only problems because I put in -qhalt=w to cause the
compile to treat warnings as errors and stop the compile. I believe Andreas
wanted to turn this off a while back, but I had always found it useful and
rather cool that a project as large as postgres could compile without any
warnings whatsoever.

darrenk

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Jan Wieck 2000-07-07 19:47:10 Re: Re: [SQL] Re: [GENERAL] lztext and compression ratios...
Previous Message Peter Eisentraut 2000-07-07 19:27:24 Re: Lessons learned on how to build 7.0.2 on AIX 4.x