Bug #584: postgresql will not build on Solaris with cc - Mailing list pgsql-bugs

From pgsql-bugs@postgresql.org
Subject Bug #584: postgresql will not build on Solaris with cc
Date
Msg-id 200202121954.g1CJsFG52169@postgresql.org
Whole thread Raw
List pgsql-bugs
Andre Blanchard (andre@synchronicity.com) reports a bug with a severity of 1
The lower the number the more severe it is.

Short Description
postgresql will not build on Solaris with cc

Long Description
This is the input to build on Solaris

OS Version 5.6 5.7 5.8 (same results)
Ansi C Compiler version cc -V =  4.0, or 5.1 (same results)

I have many arguments to configure, however I believe the relevant one to this bug is the choice of compiler (aka cc vs
gcc)

gcc configures and will build fine.

cc will fail with the following error


ranlib libpsqlodbc.a
cc -Xa -G -h libpsqlodbc.so.0 -Wl,-Bsymbolic info.o bind.o columninfo.o connection.o convert.o drvconn.o environ.o
execute.olobj.o md5.o misc.o options.o pgtypes.o psqlodbc.o qresult.o results.o socket.o parse.o statement.o tuple.o
tuplelist.odlg_specific.o odbcapi.o multibyte.o gpps.o -L/home/andre/build/relbf1/sbin/SunOS_56_CC_41 -lnsl -lsocket
-lm-R/home/andre/build/relbf1/sbin/SunOS_56_CC_41 -o libpsqlodbc.so.0.27 
ld: fatal: symbol `_fini' is multiply defined:
        (file /opt/SUNWspro/SC4.0/lib/crti.o and file psqlodbc.o);
ld: fatal: symbol `_init' is multiply defined:
        (file /opt/SUNWspro/SC4.0/lib/crti.o and file psqlodbc.o);
ld: fatal: File processing errors. No output written to libpsqlodbc.so.0.27
make[3]: *** [libpsqlodbc.so.0.27] Error 1


I would receive this on the first library build, which I corrected with with the following options CFLAGS options to
configure

-z muldefs

aka inform the link editor to process code with multiply defined symbols.  This will allow the build to proceed further
butit eventually halts at the point indicated in the output above  


Sample Code
I am providing my complete script for completeness.

 cat build_pg.template
#!/usr/local/bin/bash
PATH=/usr/local/jakarta-ant-1.4.1/bin:$PATH ; export PATH
unset EXTRA_CONFIG_OPTIONS
if [ ! -z "`echo ${SYNC_PLATFORM} | grep dbg`" ] ; then
        echo Debug
        EXTRA_CONFIG_OPTIONS=`echo --with-debug` ; export EXTRA_CONFIG_OPTIONS
else
        echo No Debug
fi
SRC_DIR=${SYNC_DEV_DIR}/${SYNC_RELEASE}/src/vendor/postgresql/72 ; export SRC_DIR
SBIN_DIR=${SYNC_DEV_DIR}/${SYNC_RELEASE}/sbin/${SYNC_PLATFORM} ; export SBIN_DIR
SOBJ_DIR=${SYNC_DEV_DIR}/${SYNC_RELEASE}/obj/${SYNC_PLATFORM}/postgresql-72 ; export SOBJ_DIR
#NOTE JAVA_HOME is different for each platform
if [ `uname` = "AIX" ] ; then
JAVA_HOME=/usr/local/java.130 ; export JAVA_HOME;
echo Press Return
read input
fi
if [ `uname` = "HP-UX" ] ; then
JAVA_HOME=/usr/local/java.130 ; export JAVA_HOME;
fi
if [ `uname` = "SunOS" ] ; then
JAVA_HOME=/usr/local/j2sdk1_3_1 ; export JAVA_HOME;
CONFIGURE_ENV="CC=cc" ; export CONFIGURE_ENV
CONFIGURE_ENV1="CFLAGS='-z muldefs'" ; export CONFIGURE_ENV1
fi
echo EXTRA CONFIG OPTIONS : ${EXTRA_CONFIG_OPTIONS}
echo CONFIGURE_ENV : ${CONFIGURE_ENV}
TCL_HOME=${HOME}/build/${SYNC_RELEASE}/src/vendor/tcl/tcl8.3.3 ; export TCL_HOME
TK_HOME=${HOME}/build/${SYNC_RELEASE}/src/vendor/tk/tk8.3.3 ; export TK_HOME
TCL_INST=${HOME}/build/${SYNC_RELEASE}/sbin/${SYNC_PLATFORM} ; export TCL_INST
TK_INST=${HOME}/build/${SYNC_RELEASE}/sbin/${SYNC_PLATFORM} ; export TK_INST
#VPATH=${SRC_DIR}/src ; export VPATH
echo "env ${CONFIGURE_ENV} ${CONFIGURE_ENV1} ${SRC_DIR}/configure --srcdir=${SRC_DIR} \
        --prefix=${SOBJ_DIR}/install \
        --enable-locale \
        --enable-multibyte \
        --with-CXX \
        ${EXTRA_CONFIG_OPTIONS} \
        --with-tcl \
        --without-tk \
        --with-java \
        --with-x \
        --with-odbc \
        --with-tclconfig=${TCL_INST} \
        --with-tkconfig=${TK_INST} \
        --with-includes="${SOBJ_DIR}/../tk/include ${SOBJ_DIR}/../tcl/include" \
        --with-libraries=${TCL_INST} \
        --bindir=${SBIN_DIR} \
        --libdir=${SBIN_DIR} "
env ${CONFIGURE_ENV} CFLAGS='-z muldefs' bash  ${SRC_DIR}/configure --srcdir=${SRC_DIR} \
        --prefix=${SOBJ_DIR}/install \
        --enable-locale \
        --enable-multibyte \
        --with-CXX \
        ${EXTRA_CONFIG_OPTIONS} \
        --with-tcl \
        --without-tk \
        --with-java \
        --with-x \
        --with-odbc \
        --with-tclconfig=${TCL_INST} \
        --with-tkconfig=${TK_INST} \
        --with-includes="${SOBJ_DIR}/../tk/include ${SOBJ_DIR}/../tcl/include" \
        --with-libraries=${TCL_INST} \
        --bindir=${SBIN_DIR} \
        --libdir=${SBIN_DIR}
make


No file was uploaded with this report

pgsql-bugs by date:

Previous
From: pgsql-bugs@postgresql.org
Date:
Subject: Bug #584: postgresql will not build on Solaris with cc
Next
From: Tom Lane
Date:
Subject: Re: Bug #584: postgresql will not build on Solaris with cc