Thread: BUG #1807: cannot build postgresql: libascii_and_mic.so.0.0: No such file or directory

The following bug has been logged online:

Bug reference:      1807
Logged by:          Janet Hempstead
Email address:      hempsteadj@rogers.com
PostgreSQL version: 8.0.3
Operating system:   Solaris 9 (sparc)
Description:        cannot build postgresql: libascii_and_mic.so.0.0: No
such file or directory
Details:

I am trying to build postgresql 8.0.3 on a Sun Ultra 5 running Solaris 9.  I
have the Sunfreeware (small) version of gcc 3.3.2 installed.  I have
searched and I cannot find a similar problem report and I have been unable
to resolve this compile problem (although I think it is in the order that
things are specified on the gcc line).

I cannot add -m64 to the compile line because there
are other Sunfreeware packages installed that are not 64-bit-enabled (I
think it was readline): is this *really* the problem?

Here is my ./configure invocation:

export LDFLAGS='-L /usr/lib -L /usr/local/lib -L /usr/local/ssl/lib'
export CPPFLAGS='-fPIC -I /usr/include -I /usr/local/include -I
/usr/local/ssl/include'
export CFLAGS='-fPIC -I /usr/include -I /usr/local/include -I
/usr/local/ssl/include'
export CXXFLAGS=$CFLAGS
export LDFLAGS_SL=''
./configure \
  --with-openssl \
  --with-pam \
  --with-perl \
  --enable-thread-safety \
  --disable-nls

Here is the context of the error message:

 -Wmissing-prototypes -Wpointer-arith -Wendif-labels -fno-strict-aliasing
-fPIC -I../../../../../../src/include -fPIC -I /usr/include -I
/usr/local/include -I /usr/local/ssl/include   -c -o ascii_and_mic.o
ascii_and_mic.c
gcc -shared -h libascii_and_mic.so.0  ascii_and_mic.o
-L../../../../../../src/port -L -L -L   -o libascii_and_mic.so.0.0
gcc: libascii_and_mic.so.0.0: No such file or directory
make[3]: *** [libascii_and_mic.so.0.0] Error 1
make[3]: Leaving directory
`/lib001/postgresql-8.0.3/src/backend/utils/mb/conversion_procs/ascii_and_mi
c'
make[2]: *** [all] Error 2
make[2]: Leaving directory
`/lib001/postgresql-8.0.3/src/backend/utils/mb/conversion_procs'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/lib001/postgresql-8.0.3/src'
make: *** [all] Error 2

I am probably doing something really stupid; please let me know.  Thanks!

Janet
"Janet Hempstead" <hempsteadj@rogers.com> writes:
> I am trying to build postgresql 8.0.3 on a Sun Ultra 5 running Solaris 9.
> ...
> export LDFLAGS='-L /usr/lib -L /usr/local/lib -L /usr/local/ssl/lib'
> ...
> gcc -shared -h libascii_and_mic.so.0  ascii_and_mic.o
> -L../../../../../../src/port -L -L -L   -o libascii_and_mic.so.0.0
> gcc: libascii_and_mic.so.0.0: No such file or directory

Hmm ... I think what happened here is that the first -L ate the second
-L as argument, and then the third -L ate the -o, leaving
libascii_and_mic.so.0.0 looking like an input filename rather than an
output filename to gcc.  But this is of course only the symptom --- the
question is how did those argument-less -L switches get into the command
line?  I'm guessing that your LDFLAGS switch got munged into this.

The recommended, supported way of specifying library directories is
not through LDFLAGS, but like this:

    configure ... --with-libs=/usr/lib:/usr/local/lib:/usr/local/ssl/lib

I think that your LDFLAGS approach might have worked if you'd left out
the spaces between the -L's and the directories, but given the way we
whack LDFLAGS around in the makefiles, it definitely won't work with
spaces :-(

            regards, tom lane