Archived

This forum has been archived. Please start a new discussion on GitHub.

Building Ice (cpp) on Solaris 10 (sparc)

After going through the Ice source documentation several times, I am trying to still flesh out the correct environment for building Ice on Solaris 10 on sparc.

The src documentation simply states that the only supported compilers are GCC 3.4.3 on x86/x64 and GCC 4.3.2 on SPARC and mentions nothing else, however, the 'Supported Platforms for Ice 3.4.1' web page specifically states that 'Sun GCC' is what's supported for Solaris 10 on sparc.

I've tried installing GCC for Sun Systems 4.3.2 and am consistently getting errors such as cg assertion failures in sunIR.cc when building Ice. Other versions of GCC available for Solaris / sparc, such as Blastwave GCC v4.5.1, produce undefined symbol errors after a brief period of building Ice but seem to build other things just fine.

Not having used the actual 'GCC for Sun Systems' packages before (I've traditionally used SunFreeWare or Blastwave), and with none of Oracle's installation documentation links currently working on any of the GCC downloads they've got on their site, I was wondering if someone could provide a working build environment profile for the Solaris 10 on sparc combination so I can compare what I've been doing. Specifically, I'm looking for where the Sun code generator and GCC should live and any environment variables that need to be set (plus anything else relevant).

I'm using a fresh install of Solaris 10 u9 on a T2000.

Any help would be appreciated.

Many thanks,

- Darren

Comments

  • dwayne
    dwayne St. John's, Newfoundland
    Hi Darren,

    Have you tried the Cool Tools GCC 4.3.2 compiler. You can find download and install instructions here. We installed it in /opt/cooltools but I do not believe the installation directory matters.
  • I'll give it a try and let you know how it goes.

    Thanks!
  • Actually, just looking over that page, the GCC for Sun Systems 4.3.2 is exactly what I tried first.

    I'm in the midst of re-installing the whole thing at the moment to make sure I didn't miss anything.
  • On Solaris 10 9/10 on sparc (sun4v), I'm consistently getting a requirement of libiconv during the build process (undefined symbols). I've done several fresh Solaris installs all with the same outcome.

    Undefined first referenced
    symbol in file
    libiconv_close ../../lib/libIce.so
    libiconv_open ../../lib/libIce.so
    libiconv ../../lib/libIce.so
    ld: fatal: Symbol referencing errors. No output written to ../../bin/icepatch2server
    collect2: ld returned 1 exit status

    Modifying the cpp/config/Make.rules.SunOS to include the -liconv as well as editing the individual component Makfiles to add the $(ICONV_LIBS) variable - seems to get the job done. I've had to implement this work-around with FreezeScript, IceBox, Glacier2, IcePatch2, etc.

    I'm wondering what it is I'm missing . . any ideas? Should I be installing just a base system without any Solaris development tools? I did notice in the cpp/config/Make.rules.SunOS, that it only accounts Sun4u as well - is this intended?


    As far as the system I'm working on, here are some of the environment details.

    Building with 'gmake DB_HOME=/usr/local/BerkeleyDB.4.8 EXPAT_HOME=/usr/local OPENSSL_HOME=/usr/local/ssl MCPP_HOME=/usr/local ICONV_HOME=/usr/local'

    GCC for Sun Systems 4.3.2 is setup in /opt/gcc.

    BDB and patched MCPP installed from Third-Party sources in /usr/local/BerkeleyDB.4.8 and /usr/local/lib respectively.

    Expat, openssl, libintl, and (now) iconv installed from Sunfreeware in /usr/local/lib.

    The '/etc/default/login' & '/etc/default/su' paths are setup as:

    PATH=/opt/gcc/bin:/usr/local/bin:/usr/sfw/bin:/usr/bin:/opt/csw/bin:/usr/ccs/bin

    SUPATH=/opt/gcc/bin:/usr/local/bin:/usr/sfw/bin:/usr/bin:/usr/sbin:/opt/csw/bin:/usr/ccs/bin

    The ld library paths are setup as:

    crle -c /var/ld/ld.config -l /lib:/usr/lib:/opt/gcc/lib:/usr/local/lib:/opt/csw/lib:/usr/sfw/lib:/opt/gcc/lib/sys

    crle 4-64 -c /var/ld/64/ld.config -l /lib/64:/usr/lib/64:/opt/gcc/lib/sparcv9:/opt/csw/lib/sparcv9:/usr/sfw/lib/sparcv9:/opt/gcc/lib/sys:/usr/sfw/lib/64



    bash-3.00$ ldd lib/libIce.so
    libIceUtil.so.34 => (file not found)
    libbz2.so.1 => /usr/lib/libbz2.so.1
    libsocket.so.1 => /lib/libsocket.so.1
    libstdc++.so.6 => /usr/sfw/lib/libstdc++.so.6
    libm.so.2 => /lib/libm.so.2
    libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1
    libc.so.1 => /lib/libc.so.1
    libnsl.so.1 => /lib/libnsl.so.1
    libmp.so.2 => /lib/libmp.so.2
    libmd.so.1 => /lib/libmd.so.1
    libscf.so.1 => /lib/libscf.so.1
    libdoor.so.1 => /lib/libdoor.so.1
    libuutil.so.1 => /lib/libuutil.so.1
    libgen.so.1 => /lib/libgen.so.1
    /platform/SUNW,Sun-Fire-T200/lib/libc_psr.so.1
    /platform/SUNW,Sun-Fire-T200/lib/libmd_psr.so.1

    bash-3.00$ find ./ -name libIceUtil.so.34
    ./lib/libIceUtil.so.34

    bash-3.00$ nm /lib/libc.so.1 | grep iconv
    000526b0 T _iconv
    00052634 T _iconv_close
    00051ef0 T _iconv_open
    000526b0 W iconv
    00052634 W iconv_close
    00051ef0 W iconv_open
    000521c8 t iconv_open_all
    00052414 t iconv_open_private
    00052298 t iconv_search_alias

    bash-3.00$ what /lib/libc.so.1
    /lib/libc.so.1:
    SunOS 5.10 Generic 142909-17 Aug 2010
  • bernard
    bernard Jupiter, FL
    Hi Darren,

    It looks like you're not using / linking with the Sun C library:
    sun:~/install/Ice-3.4.1/lib$ ldd libIce.so
            libIceUtil.so.34 =>      /home/bernard/install/Ice-3.4.1/lib/libIceUtil.so.34
            libbz2.so.1 =>   /usr/lib/libbz2.so.1
            libdl.so.1 =>    /lib/libdl.so.1
            libsocket.so.1 =>        /lib/libsocket.so.1
            libstdc++.so.6 =>        /opt/cooltools/gcc/bin/../lib//libstdc++.so.6
            libm.so.2 =>     /lib/libm.so.2
            libgcc_s.so.1 =>         /opt/cooltools/gcc/bin/../lib//libgcc_s.so.1
            libpthread.so.1 =>       /lib/libpthread.so.1
            librt.so.1 =>    /lib/librt.so.1
            libc.so.1 =>     /lib/libc.so.1
            libnsl.so.1 =>   /lib/libnsl.so.1
            libaio.so.1 =>   /lib/libaio.so.1
            libmd.so.1 =>    /lib/libmd.so.1
            libmp.so.2 =>    /lib/libmp.so.2
            libscf.so.1 =>   /lib/libscf.so.1
            libdoor.so.1 =>  /lib/libdoor.so.1
            libuutil.so.1 =>         /lib/libuutil.so.1
            libgen.so.1 =>   /lib/libgen.so.1
            /platform/SUNW,UltraAX-i2/lib/libc_psr.so.1
            /platform/SUNW,UltraAX-i2/lib/libmd_psr.so.1
    sun:~/install/Ice-3.4.1/lib$ nm /lib/libc.so.1 | grep iconv
    [8882]  |    334004|      52|FUNC |GLOB |0    |9      |_iconv
    [7342]  |    333880|     124|FUNC |GLOB |0    |9      |_iconv_close
    [8764]  |    332020|     180|FUNC |GLOB |0    |9      |_iconv_open
    [7548]  |    334004|      52|FUNC |WEAK |0    |9      |iconv
    [2238]  |         0|       0|FILE |LOCL |0    |ABS    |iconv.c
    [6628]  |    333880|     124|FUNC |WEAK |0    |9      |iconv_close
    [8360]  |    332020|     180|FUNC |WEAK |0    |9      |iconv_open
    [2250]  |    332748|     208|FUNC |LOCL |0    |9      |iconv_open_all
    [2253]  |    333336|     544|FUNC |LOCL |0    |9      |iconv_open_private
    [2251]  |    332956|     380|FUNC |LOCL |0    |9      |iconv_search_alias
    sun:~/install/Ice-3.4.1/lib$ what /lib/libc.so.1
    /lib/libc.so.1:
            SunOS 5.10 Generic 127127-11 Mar 2008
    

    From looking at the Makefiles, it looks like on x86 we link with a separate iconv library.

    I don't know why this would be necessary for your SPARC build, but if you want to do this, you can by editing the Make.rules.SunOS and no other Makefile.

    Best regards,
    Bernard
  • Just updated my last post with some additional details.

    Thanks!
  • bernard
    bernard Jupiter, FL
    Hi Darren,

    I suspect the issue is that you defined 'ICONV_HOME' in your build environment.

    You don't need it, as you want to use the built-in iconv on SPARC. Let us know how it goes!

    Cheers,
    Bernard
  • I'll take that out with another fresh copy of Ice and see what happens.
  • bernard
    bernard Jupiter, FL
    Hi Darren,

    For Expat and Openssl, our build (and binaries) also use the Sun distribution, installed in /usr/sfw, and not the Sunfreeware distrib.

    I copied below the Solaris section of our third-party README.
    ======================================================================
    4. Instructions for Solaris
    ======================================================================
    
    If a third-party package is not listed below, there are no special
    requirements for configuring or building that package.
    
    
    Berkeley DB
    -----------
    
    Berkeley DB must be configured with C++ support enabled. If you intend
    to use Ice for Java with Berkeley DB, you must also enable Java
    support:
    
      $ ../dist/configure --enable-cxx
      (plus --prefix=<dir> and/or --enable-java if you like)
    
    For 64-bit builds, use:
    
      $ export CFLAGS="-m64"
      $ export CXXFLAGS="-m64"
      $ export LDFLAGS="-m64
      $ ../dist/configure --enable-cxx
      (plus --prefix=<dir> and/or --enable-java if you like)
    
    
    OpenSSL
    -------
    
    OpenSSL is included with the Solaris 10 operating system and is
    installed in /usr/sfw. If you want to use this version of OpenSSL
    with Ice, we recommend that you also install the "Solaris 10
    Encryption Kit" available from:
    
      http://www.sun.com/download/index.jsp?cat=Security&tab=3&subcat=Cryptography%20%26%20Encryption
    
    This kit is required to run the IceSSL tests successfully.
    
    
    expat
    -----
    
    expat is included with the Solaris 10 operating system and is
    installed in /usr/sfw.
    
    
    mcpp
    ----
    
    Ice requires the library version of mcpp, so configure mcpp as shown
    below:
    
      $ ./configure CFLAGS=-fPIC --enable-mcpplib --disable-shared
      (and --prefix=<dir> if you like)
    
    For 64-bit builds, use:
    
      $ ./configure CFLAGS="-fPIC -m64" --enable-mcpplib --disable-shared
      (and --prefix=<dir> if you like)
    
    On 64-bit platforms, after installation it is necessary to rename the
    library installation directory from $(prefix)/lib to
    $(prefix)/lib/sparcv9 for SPARC or $(prefix)/lib/amd64 for x86.
    

    Best regards,
    Bernard
  • Well, on the iconv front, we're using git (which requires the iconv libs). I've uninstalled it, and am trying again without my makefile hacks.
  • bernard
    bernard Jupiter, FL
    Hi Darren,

    Even git does not always need libiconv :)
    sun:~$ ldd /opt/git/bin/git
            libz.so.1 =>     /usr/lib/libz.so.1
            libsocket.so.1 =>        /lib/libsocket.so.1
            libnsl.so.1 =>   /lib/libnsl.so.1
            libcrypto.so.0.9.7 =>    /usr/sfw/lib/libcrypto.so.0.9.7
            libc.so.1 =>     /lib/libc.so.1
            libmp.so.2 =>    /lib/libmp.so.2
            libmd.so.1 =>    /lib/libmd.so.1
            libscf.so.1 =>   /lib/libscf.so.1
            libdoor.so.1 =>  /lib/libdoor.so.1
            libuutil.so.1 =>         /lib/libuutil.so.1
            libgen.so.1 =>   /lib/libgen.so.1
            libcrypto_extra.so.0.9.7 =>      /usr/sfw/lib/libcrypto_extra.so.0.9.7
            libm.so.2 =>     /lib/libm.so.2
            /platform/SUNW,UltraAX-i2/lib/libc_psr.so.1
            /platform/SUNW,UltraAX-i2/lib/libmd_psr.so.1
    

    If you have iconv installed in /usr/local and also use /usr/local as the home of another third-party package (like mcpp, DB, or your own Expat build), you may accidentally pick up the iconv headers from /usr/local while building some binaries, which in turn could result in an unwanted dependency on libiconv.

    Cheers,
    Bernard
  • Taken from the actual gmake output using:

    gmake MCPP_HOME=/usr/local EXPAT_HOME=/usr/sfw OPENSSL_HOME=/usr/sfw DB_HOME=/usr/local/BerkeleyDB.4.8

    This is the latest error I'm getting when building a fresh copy of ice:

    g++ -R /opt/Ice-3.4/lib:/usr/sfw/lib -Wall -D_REENTRANT -fPIC -g -L../../lib -o ../../bin/transformdb TransformAnalyzer.o TransformVisitor.o Transformer.o transformdb.o ../FreezeScript/Grammar.o Scanner.o AssignVisitor.o Data.o Error.o Functions.o Exception.o Parser.o Print.o Util.o -lSlice -L/usr/sfw/lib -lIceXML -L/usr/local/BerkeleyDB.4.8/lib -lFreeze -lIce -lIceUtil -lpthread -L/usr/local/BerkeleyDB.4.8/lib -ldb_cxx
    ld: warning: file libmcpp.so.0: required by ../../lib/libSlice.so, not found
    Undefined first referenced
    symbol in file
    mcpp_use_mem_buffers ../../lib/libSlice.so
    std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_set_length_and_sharable(unsigned int) ../../lib/libFreeze.so
    mcpp_get_mem_buffer ../../lib/libSlice.so
    mcpp_lib_main ../../lib/libSlice.so
    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int) /usr/local/BerkeleyDB.4.8/lib/libdb_cxx.so
    ld: fatal: Symbol referencing errors. No output written to ../../bin/transformdb
    collect2: ld returned 1 exit status
    gmake[2]: *** [../../bin/transformdb] Error 1
    gmake[2]: Leaving directory `/export/home/darrens/ice/cpp/src/FreezeScript'
    gmake[1]: *** [all] Error 1
    gmake[1]: Leaving directory `/export/home/darrens/ice/cpp/src'
    gmake: *** [all] Error 1
    bash-3.00$ ldd lib/libSlice.so
    libIceUtil.so.34 => (file not found)
    libmcpp.so.0 => /usr/local/lib/libmcpp.so.0
    libstdc++.so.6 => /usr/sfw/lib/libstdc++.so.6
    libm.so.2 => /lib/libm.so.2
    libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1
    libc.so.1 => /lib/libc.so.1
    libgcc_s.so.1 => /opt/gcc/bin/../lib//libgcc_s.so.1
    /platform/SUNW,Sun-Fire-T200/lib/libc_psr.so.1
    bash-3.00$
    bash-3.00$ ls lib/libIceUtil.so.34
    lib/libIceUtil.so.34


    Additionally, if I manually execute that g++ command and the -l and -L flags I get the following output:

    bash-3.00$ g++ -R /opt/Ice-3.4/lib:/usr/sfw/lib -Wall -D_REENTRANT -fPIC -g -L../../lib -o ../../bin/transformdb TransformAnalyzer.o TransformVisitor.o Transformer.o transformdb.o ../FreezeScript/Grammar.o Scanner.o AssignVisitor.o Data.o Error.o Functions.o Exception.o Parser.o Print.o Util.o -lSlice -L/usr/sfw/lib -lIceXML -L/usr/local/BerkeleyDB.4.8/lib -lFreeze -lIce -lIceUtil -lpthread -L/usr/local/lib -ldb_cxx -lmcpp
    Undefined first referenced
    symbol in file
    std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_M_set_length_and_sharable(unsigned int) ../../lib/libFreeze.so
    std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int) /usr/local/BerkeleyDB.4.8/lib/libdb_cxx.so
    ld: fatal: Symbol referencing errors. No output written to ../../bin/transformdb
    collect2: ld returned 1 exit status
  • bernard
    bernard Jupiter, FL
    Hi Darren,

    The mcpp link error suggests you didn't build libmcpp as per our instructions: it should be a static library.

    And for the Freeze / Berkeley DB error, can you check & confirm you built Berkeley DB with the correct C++ compiler--the one you're using to build Ice?

    Best regards,
    Bernard
  • mcpp was built using:

    ./configure CFLAGS=-fPIC --enable-mcpplib --disable-shared


    from mcpp config.log:

    It was created by mcpp configure 2.7.2, which was
    generated by GNU Autoconf 2.61. Invocation command line was

    $ ./configure CFLAGS=-fPIC --enable-mcpplib --disable-shared

    -- snip --

    configure:2021: checking build system type
    configure:2039: result: sparc-sun-solaris2.10
    configure:2061: checking host system type
    configure:2076: result: sparc-sun-solaris2.10
    configure:2098: checking target system type
    configure:2113: result: sparc-sun-solaris2.10
    configure:2156: checking for a BSD-compatible install
    configure:2212: result: config/install-sh -c
    configure:2223: checking whether build environment is sane
    configure:2266: result: yes
    configure:2294: checking for a thread-safe mkdir -p
    configure:2333: result: config/install-sh -c -d
    configure:2346: checking for gawk
    configure:2376: result: no
    configure:2346: checking for mawk
    configure:2376: result: no
    configure:2346: checking for nawk
    configure:2362: found /usr/bin/nawk
    configure:2373: result: nawk
    configure:2384: checking whether make sets $(MAKE)
    configure:2405: result: yes
    configure:2643: checking for gcc
    configure:2659: found /opt/gcc/bin/gcc
    configure:2670: result: gcc
    configure:2908: checking for C compiler version
    configure:2915: gcc --version >&5
    sparc-sun-solaris2.10-gcc (GCC) 4.3.2 (20090604) (gccfss)
    Copyright (C) 2008 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


    from the Third-Party-Sources Berkley DB config.log



    It was created by Berkeley DB configure 4.8.30, which was
    generated by GNU Autoconf 2.65. Invocation command line was

    $ ../dist/configure --enable-cxx

    -- snip --


    configure:2900: checking build system type
    configure:2914: result: sparc-sun-solaris2.10
    configure:2934: checking host system type
    configure:2947: result: sparc-sun-solaris2.10
    configure:2979: checking if building in the top-level or dist directories
    configure:2990: result: no
    configure:3074: checking if --disable-cryptography option specified
    configure:3087: result: no
    configure:3091: checking if --disable-hash option specified
    configure:3104: result: no
    configure:3108: checking if --disable-partition option specified
    configure:3121: result: no
    configure:3125: checking if --disable-compression option specified
    configure:3138: result: no
    configure:3142: checking if --disable-mutexsupport option specified
    configure:3155: result: no
    configure:3159: checking if --disable-atomicsupport option specified
    configure:3172: result: no
    configure:3176: checking if --disable-queue option specified
    configure:3189: result: no
    configure:3193: checking if --disable-replication option specified
    configure:3206: result: no
    configure:3210: checking if --disable-statistics option specified
    configure:3223: result: no
    configure:3227: checking if --disable-verify option specified
    configure:3240: result: no
    configure:3244: checking if --enable-compat185 option specified
    configure:3253: result: no
    configure:3256: checking if --enable-cxx option specified
    configure:3265: result: yes
    configure:3268: checking if --enable-debug option specified
    configure:3277: result: no
    configure:3280: checking if --enable-debug_rop option specified
    configure:3289: result: no
    configure:3292: checking if --enable-debug_wop option specified
    configure:3301: result: no
    configure:3304: checking if --enable-diagnostic option specified
    configure:3328: result: no
    configure:3332: checking if --enable-dump185 option specified
    configure:3341: result: no
    configure:3344: checking if --enable-java option specified
    configure:3353: result: no
    configure:3356: checking if --enable-mingw option specified
    configure:3365: result: no
    configure:3368: checking if --enable-o_direct option specified
    configure:3377: result: no
    configure:3380: checking if --enable-posixmutexes option specified
    configure:3389: result: no
    configure:3406: checking if --enable-rpc option specified
    configure:3419: result: no
    configure:3422: checking if --enable-smallbuild option specified
    configure:3441: result: no
    configure:3444: checking if --enable-stl option specified
    configure:3456: result: no
    configure:3459: checking if --enable-tcl option specified
    configure:3468: result: no
    configure:3471: checking if --enable-test option specified
    configure:3480: result: no
    configure:3483: checking if --enable-uimutexes option specified
    configure:3492: result: no
    configure:3495: checking if --enable-umrw option specified
    configure:3504: result: no
    configure:3507: checking if --with-mutex=MUTEX option specified
    configure:3523: result: no
    configure:3535: checking if --with-tcl=DIR option specified
    configure:3545: result: no
    configure:3551: checking if --with-uniquename=NAME option specified
    configure:3564: result: no
    configure:3662: checking for chmod
    configure:3678: found /usr/bin/chmod
    configure:3689: result: chmod
    configure:3756: checking for cp
    configure:3772: found /usr/bin/cp
    configure:3783: result: cp
    configure:3947: checking for ln
    configure:3963: found /usr/bin/ln
    configure:3974: result: ln
    configure:4041: checking for mkdir
    configure:4057: found /usr/bin/mkdir
    configure:4068: result: mkdir
    configure:4135: checking for rm
    configure:4151: found /usr/bin/rm
    configure:4162: result: rm
    configure:4335: checking for sh
    configure:4353: found /usr/bin/sh
    configure:4365: result: /usr/bin/sh
    configure:4407: checking for a BSD-compatible install
    configure:4475: result: ../dist/install-sh -c
    configure:4621: checking for cc
    configure:4651: result: no
    configure:4621: checking for gcc
    configure:4637: found /opt/gcc/bin/gcc
    configure:4648: result: gcc
    configure:4679: checking for C compiler version
    configure:4688: gcc --version >&5
    sparc-sun-solaris2.10-gcc (GCC) 4.3.2 (20090604) (gccfss)
    Copyright (C) 2008 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • I think I've found the problem . .

    bash-3.00$ ldd /usr/local/BerkeleyDB.4.8/lib/libdb_cxx.so
    libresolv.so.2 => /lib/libresolv.so.2
    librt.so.1 => /lib/librt.so.1
    libpthread.so.1 => /lib/libpthread.so.1
    libnsl.so.1 => /lib/libnsl.so.1
    libsocket.so.1 => /lib/libsocket.so.1
    libstdc++.so.6 => /usr/sfw/lib/libstdc++.so.6
    libm.so.2 => /lib/libm.so.2
    libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1
    libc.so.1 => /lib/libc.so.1
    libaio.so.1 => /lib/libaio.so.1
    libmd.so.1 => /lib/libmd.so.1
    libmp.so.2 => /lib/libmp.so.2
    libscf.so.1 => /lib/libscf.so.1
    libdoor.so.1 => /lib/libdoor.so.1
    libuutil.so.1 => /lib/libuutil.so.1
    libgen.so.1 => /lib/libgen.so.1
    /platform/SUNW,Sun-Fire-T200/lib/libc_psr.so.1
    /platform/SUNW,Sun-Fire-T200/lib/libmd_psr.so.1
  • bernard
    bernard Jupiter, FL
    Hi Darren,

    Hope you found the solution to these builds issues. Perhaps a problem with your LD_LIBRARY_PATH, or too many GCCs installed on your system?

    Once your build is working, it would be great if you could summarize the issues you encountered and associated solutions/work-arounds. We will then update our build instructions to highlight any potential pitfall.

    Thanks,
    Bernard
  • Sure thing . .

    I had several issues, but certainly I spent the most time getting GCC for Sun Systems installed properly with the existing GCC installation (I installed Solaris with the 'Entire Distribution' system package). With Oracle's integration of Sun, documentation links from docs.sun.com (even the GCC for Sun Systems docs themselves) are either dead or getting redirected to an Oracle documentation search page (with sub-optimal results at best).

    The basis for this installation exercise is primarily to facilitate some easy to follow documentation for the Asterisk SCF project on our public wiki as well as getting a continuous build slave up and running so I've tried to make things as simple as possible. The results of all my work can be seen here (https://wiki.asterisk.org/wiki/display/TOP/Building+-+Solaris).

    Several of my initial installations were all plagued by paths not being setup properly and by the fact that I'd installed all of these dependencies to support git and subversion. I certainly had the most grief with libiconv by a long way. While I'm sure time could have been spent making the system default and 3rd party libraries co-exist, I wanted to keep our documentation to a minimum.

    Starting with a fresh Solaris installation and working my way down with Sun GCC properly, and compiling everything else from source has seemingly solved 98% of my problems.

    I would suggest that the Solaris docs for Ice could be enhanced. Notes on an optimal system configuration would be most helpful (i.e. what system package works best on a fresh Solaris installation, paths, swap file size, etc.), so that someone fairly inexperienced with Solaris (or rusty in my case) can install Ice without referencing any other docs.

    Many thanks again for all the help, and I'll certainly keep this thread updated with any other findings / hints I come up with.

    - Darren
  • Asterisk SCF - Master - ice - Solaris 10 - sparc 8: Build Log - Atlassian Bamboo (at the bottom)

    I'm currently getting 'ld: fatal: file /dev/zero: mmap anon failed: Not enough space' on the automated builds. If I'm manually building Ice and simply re-run the gmake command, the build continues.

    I've not googled this one extensively just yet, but will let you know what I come up with.

    Thanks,

    - Darren
  • bernard
    bernard Jupiter, FL
    Hi Darren,

    Hope you found a solution to this build problem.

    We had to increase the swap space on our Solaris box to build Ice; you may need to do likewise on your system:

    Swap Space and Virtual Memory

    Cheers,
    Bernard