Re: postgresql-9.5.3 compilation on Solaris SPARC

From: Asif Naeem <anaeem(dot)it(at)gmail(dot)com>
To: Venkata Balaji N <nag1010(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: postgresql-9.5.3 compilation on Solaris SPARC
Date: 2016-05-20 06:49:01
Message-ID: CAEB4t-O1EDtAJ3gTDeadx5mBUtvyWG30e-oE+XdXDaWW7fgzJA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Venkata,

I have't work on solaris sparc system since long but I would like to share
my feedback on this, I hope it might be useful.

On Fri, May 20, 2016 at 10:14 AM, Venkata Balaji N <nag1010(at)gmail(dot)com>
wrote:

> Hi,
>
> "make" command is generating the following error while compiling
> postgresql-9.5.3 on Solaris SPARC.
>

While working with PG, gmake is more appropriate then make that have
different implementation on different vendor OS.

> I tried compiling 9.2 and 9.3, works fine. This is only happening on 9.5.
>
> ../../src/port/libpgport_srv.a ../../src/common/libpgcommon_srv.a -lnsl
> -lrt -lsocket -lm -o postgres
>
> Undefined first referenced
>
> symbol in file
>
> atomic_cas_64 port/atomics.o
>
> atomic_cas_32 port/atomics.o
>
> ld: fatal: Symbol referencing errors. No output written to postgres
>
> make[2]: *** [postgres] Error 1
>
> make[2]: Leaving directory `/opt/postgresql-9.5.3/src/backend'
>
> make[1]: *** [all-backend-recurse] Error 2
>
> make[1]: Leaving directory `/opt/postgresql-9.5.3/src'
>
> make: *** [all-src-recurse] Error 2
>

Humm .. Interesting. atomic_cas_64 seems suppose to part of standard c
library. There might be something wrong with the configuration. Probably
check "nm libc.so.1 | grep atomic_cas_64".

Any help would be appreciated. Do i need to give any particular CFLAGS ?
>
>
> Below is the *configure *command -
>
>
> ./configure --prefix=/opt/postgres/9.5.3 CC=/opt/SUNWspro/bin/cc
> 'CFLAGS=-xO3 -xarch=v9 -xspace -W0,-Lt -W2,-Rcond_elim -Xa -xildoff
> -xc99=none -xCC' --enable-cassert --without-readline --enable-thread-safety
> LDFLAGS='-L/usr/lib/sparcv9 -L/usr/ucblib/sparcv9'
>

AFAIR I deprived use of -xarch=v9 and used -m64 instead. I wonder why are
you using LDFLAGS='-L/usr/lib/sparcv9 -L/usr/ucblib/sparcv9', when you
provide -xarch=v9 compiler should automatically pick the correct libraries
and headers I think. There seems lot of cflags used, are you using them
because of any recommendation or any issue faced ?.

A few pointers:
1. What is version of SunStudio ?
2. Try

cat atomic_cas_64-test.c

#include <sys/atomic.h>
> int main()
> {
> atomic_cas_64(NULL,NULL,NULL);
> }
>

> /opt/SUNWspro/bin/cc -m64 atomic_cas_64-test.c -o atomic_cas_64-test

try ldd to check which library it is resolving atomic_cas_64 symbol i.e.

ldd atomic_cas_64-test

Regards,
Muhammad Asif Naeem

> I tried adding an option CFLAGS_SSE42='-msse4.2'. No luck.
>
> *Operating System*
>
> -bash-3.00$ uname -a
> SunOS sunfire2 5.10 Generic sun4u sparc SUNW,Sun-Fire-V210
>
> *configure command output. Please let me know if you need config.log file*
>
> -checking build system type... sparc-sun-solaris2.10
> checking host system type... sparc-sun-solaris2.10
> checking which template to use... solaris
> checking whether to build with 64-bit integer date/time support... yes
> checking whether NLS is wanted... no
> checking for default port number... 5432
> checking for block size... 8kB
> checking for segment size... 1GB
> checking for WAL block size... 8kB
> checking for WAL segment size... 16MB
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... no
> checking whether /opt/SUNWspro/bin/cc accepts -g... yes
> checking for /opt/SUNWspro/bin/cc option to accept ISO C89... none needed
> checking whether the C compiler still works... yes
> checking how to run the C preprocessor... /opt/SUNWspro/bin/cc -Xa -E
> checking allow thread-safe client libraries... yes
> checking whether to build with Tcl... no
> checking whether to build Perl modules... no
> checking whether to build Python modules... no
> checking whether to build with GSSAPI support... no
> checking whether to build with PAM support... no
> checking whether to build with LDAP support... no
> checking whether to build with Bonjour support... no
> checking whether to build with OpenSSL support... no
> checking whether to build with SELinux support... no
> checking for grep that handles long lines and -e... /usr/sfw/bin/ggrep
> checking for egrep... /usr/sfw/bin/ggrep -E
> checking for non-GNU ld... /usr/ucb/ld
> checking if the linker (/usr/ucb/ld) is GNU ld... no
> checking for ranlib... ranlib
> checking for strip... strip
> checking whether it is possible to strip libraries... no
> checking for ar... ar
> checking for a BSD-compatible install... config/install-sh -c
> checking for tar... /usr/bin/tar
> checking whether ln -s works... yes
> checking for gawk... no
> checking for mawk... no
> checking for nawk... nawk
> checking for a thread-safe mkdir -p... /opt/sfw/bin/gmkdir -p
> checking for bison... /usr/sfw/bin/bison
> configure: using bison (GNU Bison) 1.875
> checking for flex... configure: WARNING:
> *** The installed version of Flex, /usr/sfw/bin/flex, is too old to use
> with PostgreSQL.
> *** Flex version 2.5.31 or later is required, but this is
> /usr/sfw/bin/flex version 2.5.4.
> no
> configure: WARNING:
> *** Without Flex you will not be able to build PostgreSQL from Git nor
> *** change any of the scanner definition files. You can obtain Flex from
> *** a GNU mirror site. (If you are using the official distribution of
> *** PostgreSQL then you do not need to worry about this because the Flex
> *** output is pre-generated.)
> checking for perl... /usr/bin/perl
> configure: using perl 5.8.4
> checking for main in -lm... yes
> checking for library containing setproctitle... no
> checking for library containing dlopen... none required
> checking for library containing socket... -lsocket
> checking for library containing shl_load... no
> checking for library containing getopt_long... none required
> checking for library containing crypt... none required
> checking for library containing shm_open... -lrt
> checking for library containing shm_unlink... none required
> checking for library containing fdatasync... none required
> checking for library containing sched_yield... none required
> checking for library containing gethostbyname_r... -lnsl
> checking for library containing shmget... none required
> checking for inflate in -lz... yes
> checking for ANSI C header files... yes
> checking for sys/types.h... yes
> checking for sys/stat.h... yes
> checking for stdlib.h... yes
> checking for string.h... yes
> checking for memory.h... yes
> checking for strings.h... yes
> checking for inttypes.h... yes
> checking for stdint.h... yes
> checking for unistd.h... yes
> checking atomic.h usability... yes
> checking atomic.h presence... yes
> checking for atomic.h... yes
> checking crypt.h usability... yes
> checking crypt.h presence... yes
> checking for crypt.h... yes
> checking dld.h usability... no
> checking dld.h presence... no
> checking for dld.h... no
> checking fp_class.h usability... no
> checking fp_class.h presence... no
> checking for fp_class.h... no
> checking getopt.h usability... yes
> checking getopt.h presence... yes
> checking for getopt.h... yes
> checking ieeefp.h usability... yes
> checking ieeefp.h presence... yes
> checking for ieeefp.h... yes
> checking ifaddrs.h usability... no
> checking ifaddrs.h presence... no
> checking for ifaddrs.h... no
> checking langinfo.h usability... yes
> checking langinfo.h presence... yes
> checking for langinfo.h... yes
> checking mbarrier.h usability... no
> checking mbarrier.h presence... no
> checking for mbarrier.h... no
> checking poll.h usability... yes
> checking poll.h presence... yes
> checking for poll.h... yes
> checking pwd.h usability... yes
> checking pwd.h presence... yes
> checking for pwd.h... yes
> checking sys/ioctl.h usability... yes
> checking sys/ioctl.h presence... yes
> checking for sys/ioctl.h... yes
> checking sys/ipc.h usability... yes
> checking sys/ipc.h presence... yes
> checking for sys/ipc.h... yes
> checking sys/poll.h usability... yes
> checking sys/poll.h presence... yes
> checking for sys/poll.h... yes
> checking sys/pstat.h usability... no
> checking sys/pstat.h presence... no
> checking for sys/pstat.h... no
> checking sys/resource.h usability... yes
> checking sys/resource.h presence... yes
> checking for sys/resource.h... yes
> checking sys/select.h usability... yes
> checking sys/select.h presence... yes
> checking for sys/select.h... yes
> checking sys/sem.h usability... yes
> checking sys/sem.h presence... yes
> checking for sys/sem.h... yes
> checking sys/shm.h usability... yes
> checking sys/shm.h presence... yes
> checking for sys/shm.h... yes
> checking sys/socket.h usability... yes
> checking sys/socket.h presence... yes
> checking for sys/socket.h... yes
> checking sys/sockio.h usability... yes
> checking sys/sockio.h presence... yes
> checking for sys/sockio.h... yes
> checking sys/tas.h usability... no
> checking sys/tas.h presence... no
> checking for sys/tas.h... no
> checking sys/time.h usability... yes
> checking sys/time.h presence... yes
> checking for sys/time.h... yes
> checking sys/un.h usability... yes
> checking sys/un.h presence... yes
> checking for sys/un.h... yes
> checking termios.h usability... yes
> checking termios.h presence... yes
> checking for termios.h... yes
> checking ucred.h usability... yes
> checking ucred.h presence... yes
> checking for ucred.h... yes
> checking utime.h usability... yes
> checking utime.h presence... yes
> checking for utime.h... yes
> checking wchar.h usability... yes
> checking wchar.h presence... yes
> checking for wchar.h... yes
> checking wctype.h usability... yes
> checking wctype.h presence... yes
> checking for wctype.h... yes
> checking for net/if.h... yes
> checking for sys/ucred.h... no
> checking netinet/in.h usability... yes
> checking netinet/in.h presence... yes
> checking for netinet/in.h... yes
> checking for netinet/tcp.h... yes
> checking zlib.h usability... yes
> checking zlib.h presence... yes
> checking for zlib.h... yes
> checking whether byte ordering is bigendian... yes
> checking for inline... no
> checking for quiet inline (no complaint if unreferenced)... no
> checking for printf format archetype... printf
> checking for flexible array members... no
> checking for signed types... yes
> checking for __func__... no
> checking for __FUNCTION__... no
> checking for _Static_assert... no
> checking for __builtin_types_compatible_p... no
> checking for __builtin_bswap32... no
> checking for __builtin_constant_p... no
> checking for __builtin_unreachable... no
> checking for __VA_ARGS__... no
> checking whether struct tm is in sys/time.h or time.h... time.h
> checking for struct tm.tm_zone... no
> checking for tzname... yes
> checking for union semun... no
> checking for struct sockaddr_un... yes
> checking for struct sockaddr_storage... yes
> checking for struct sockaddr_storage.ss_family... yes
> checking for struct sockaddr_storage.__ss_family... no
> checking for struct sockaddr_storage.ss_len... no
> checking for struct sockaddr_storage.__ss_len... no
> checking for struct sockaddr.sa_len... no
> checking for struct addrinfo... yes
> checking for intptr_t... yes
> checking for uintptr_t... yes
> checking for unsigned long long int... yes
> checking for long long int... yes
> checking for locale_t... no
> checking for struct cmsgcred... no
> checking for struct option... yes
> checking for z_streamp... yes
> checking for special C compiler options needed for large files... no
> checking for _FILE_OFFSET_BITS value needed for large files... no
> checking size of off_t... 8
> checking for int timezone... yes
> checking types of arguments for accept()... int, int, struct sockaddr *,
> int *
> checking whether gettimeofday takes only one argument... no
> checking for wcstombs_l declaration... no
> checking for cbrt... yes
> checking for dlopen... yes
> checking for fdatasync... yes
> checking for getifaddrs... no
> checking for getpeerucred... yes
> checking for getrlimit... yes
> checking for mbstowcs_l... no
> checking for memmove... yes
> checking for poll... yes
> checking for pstat... no
> checking for pthread_is_threaded_np... no
> checking for readlink... yes
> checking for setproctitle... no
> checking for setsid... yes
> checking for shm_open... yes
> checking for sigprocmask... yes
> checking for symlink... yes
> checking for sync_file_range... no
> checking for towlower... yes
> checking for utime... yes
> checking for utimes... yes
> checking for wcstombs... yes
> checking for wcstombs_l... no
> checking for fseeko... yes
> checking for _LARGEFILE_SOURCE value needed for large files... no
> checking whether fdatasync is declared... yes
> checking whether strlcat is declared... yes
> checking whether strlcpy is declared... yes
> checking whether F_FULLFSYNC is declared... no
> checking for struct sockaddr_in6... yes
> checking for PS_STRINGS... no
> checking for snprintf... yes
> checking for vsnprintf... yes
> checking whether snprintf is declared... yes
> checking whether vsnprintf is declared... yes
> checking for isinf... no
> checking for fpclass... yes
> checking for crypt... yes
> checking for fls... no
> checking for getopt... yes
> checking for getrusage... yes
> checking for inet_aton... no
> checking for mkdtemp... no
> checking for random... yes
> checking for rint... yes
> checking for srandom... yes
> checking for strerror... yes
> checking for strlcat... yes
> checking for strlcpy... yes
> checking for unsetenv... yes
> checking for getpeereid... no
> checking for getaddrinfo... yes
> checking for getopt_long... yes
> checking for sigsetjmp... yes
> checking whether sys_siglist is declared... no
> checking for syslog... yes
> checking syslog.h usability... yes
> checking syslog.h presence... yes
> checking for syslog.h... yes
> checking for opterr... yes
> checking for optreset... no
> checking for strtoll... yes
> checking for strtoull... yes
> checking whether pthreads work with -pthread... no
> checking whether pthreads work with -pthreads... no
> checking for the pthreads library -lpthread... no
> checking whether pthreads work with -mt... no
> checking for the pthreads library -lpthreads... no
> checking whether pthreads work without any flags... no
> checking whether pthreads work with -Kthread... no
> checking whether pthreads work with -kthread... no
> checking for the pthreads library -llthread... no
> checking whether pthreads work with -pthread... no
> checking whether pthreads work with -pthreads... no
> checking whether pthreads work with -mthreads... no
> checking for the pthreads library -lpthread... no
> checking whether pthreads work with --thread-safe... no
> checking whether pthreads work with -mt... no
> checking for pthread-config... no
> checking for the pthreads library -lpthreadGC2... no
> checking pthread.h usability... yes
> checking pthread.h presence... yes
> checking for pthread.h... yes
> checking for strerror_r... yes
> checking for getpwuid_r... yes
> checking for gethostbyname_r... yes
> checking whether strerror_r returns int... yes
> checking test program... ok
> checking whether long int is 64 bits... yes
> checking whether snprintf supports the %z modifier... yes
> checking size of void *... 8
> checking size of size_t... 8
> checking size of long... 8
> checking whether to build with float4 passed by value... yes
> checking whether to build with float8 passed by value... yes
> checking alignment of short... 2
> checking alignment of int... 4
> checking alignment of long... 8
> checking alignment of double... 8
> checking for int8... no
> checking for uint8... no
> checking for int64... no
> checking for uint64... no
> checking for sig_atomic_t... yes
> checking for __int128... no
> checking for builtin __sync char locking functions... no
> checking for builtin __sync int32 locking functions... no
> checking for builtin __sync int32 atomic operations... no
> checking for builtin __sync int64 atomic operations... no
> checking for builtin __atomic int32 atomic operations... no
> checking for builtin __atomic int64 atomic operations... no
> checking for __get_cpuid... no
> checking for __cpuid... no
> checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=... no
> checking for _mm_crc32_u8 and _mm_crc32_u32 with CFLAGS=-msse4.2... no
> checking which CRC-32C implementation to use... slicing-by-8
> checking for POSIX signal interface... yes
> checking for onsgmls... onsgmls
> checking for openjade... openjade
> checking for DocBook V4.2... no
> checking for DocBook stylesheets...
> /usr/share/sgml/docbook/dsssl-stylesheets
> checking for dbtoepub... no
> checking for xmllint... xmllint
> checking for xsltproc... xsltproc
> checking for osx... osx
> checking thread safety of required library functions... yes
> checking whether /opt/SUNWspro/bin/cc -Xa supports -Wl,--as-needed... no
> configure: using compiler=cc: Sun C 5.8 2005/10/13
> configure: using CFLAGS= -xO3 -xarch=v9 -xspace -W0,-Lt -W2,-Rcond_elim
> -Xa -xildoff -xc99=none -xCC -msse4.2
> configure: using CPPFLAGS=
> configure: using LDFLAGS=-L/usr/lib/sparcv9 -L/usr/ucblib/sparcv9
> configure: creating ./config.status
> config.status: creating GNUmakefile
> config.status: creating src/Makefile.global
> config.status: creating src/include/pg_config.h
> config.status: src/include/pg_config.h is unchanged
> config.status: creating src/include/pg_config_ext.h
> config.status: src/include/pg_config_ext.h is unchanged
> config.status: creating src/interfaces/ecpg/include/ecpg_config.h
> config.status: src/interfaces/ecpg/include/ecpg_config.h is unchanged
> config.status: linking src/backend/port/tas/sunstudio_sparc.s to
> src/backend/port/tas.s
> config.status: linking src/backend/port/dynloader/solaris.c to
> src/backend/port/dynloader.c
> config.status: linking src/backend/port/sysv_sema.c to
> src/backend/port/pg_sema.c
> config.status: linking src/backend/port/sysv_shmem.c to
> src/backend/port/pg_shmem.c
> config.status: linking src/backend/port/unix_latch.c to
> src/backend/port/pg_latch.c
> config.status: linking src/backend/port/dynloader/solaris.h to
> src/include/dynloader.h
> config.status: linking src/include/port/solaris.h to
> src/include/pg_config_os.h
> config.status: linking src/makefiles/Makefile.solaris to src/Makefile.port
>
> Regards,
> Venkata B N
>
> Fujitsu Australia
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message aluka raju 2016-05-20 11:17:13 PostgreSql Doubts
Previous Message Venkata Balaji N 2016-05-20 05:14:54 postgresql-9.5.3 compilation on Solaris SPARC