Archived

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

Building Ice-3.3.0 on CentOS 4.6

I'm new to Ice.

I have a fresh install of CentOS 4.6 (i386) with nptl-devel installed.

First, I downloaded the Ice-3.3.0 RHEL4 RPMs, installed them, and attempted to create the HelloWorld application described in the docs. I ran into some trouble, so I decided to try building Ice on my system, to see if that would work. Unfortunately, it does not.

I downloaded Ice-3.3.0.tar.gz, extracted it, changed into the Ice-3.3.0 directory, and typed "make".

It builds successfully for a while, then reaches this point:

make[3]: Entering directory `/home/stwhit/Ice-3.3.0/cpp/src/slice2cpp'
c++ -c -I. -I../../include -ftemplate-depth-128 -Wall -D_REENTRANT -I/usr/include/nptl -fPIC -g Gen.cpp
c++ -c -I. -I../../include -ftemplate-depth-128 -Wall -D_REENTRANT -I/usr/include/nptl -fPIC -g Main.cpp
rm -f ../../bin/slice2cpp
c++ -Wl,--enable-new-dtags -Wl,-rpath,/opt/Ice-3.3/lib -ftemplate-depth-128 -Wall -D_REENTRANT -I/usr/include/nptl -fPIC -g -L../../lib -o ../../bin/slice2cpp Gen.o Main.o -lSlice -lIceUtil -L/usr/lib/nptl -lpthread -lrt
/usr/bin/ld: cannot find /lib/tls/i486/libpthread.so.0
collect2: ld returned 1 exit status
make[3]: *** [../../bin/slice2cpp] Error 1
make[3]: Leaving directory `/home/stwhit/Ice-3.3.0/cpp/src/slice2cpp'
make[2]: *** [all] Error 1
make[2]: Leaving directory `/home/stwhit/Ice-3.3.0/cpp/src'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/stwhit/Ice-3.3.0/cpp'
make: *** [all] Error 1

Any ideas why I'm receiving this error? Thanks in advance.

Comments

  • benoit
    benoit Rennes, France
    Hi Stuart,

    You need to install the nptl-devel package on CentOS 4.6 as mentioned in the INSTALL.LINUX file from you Ice source distribution.

    Cheers,
    Benoit.
  • Hi Benoit,

    Thanks for the response. Notice in my original post I stated I have nptl-devel installed.

    I have a fresh install of CentOS 4.6 (i386) with nptl-devel installed.

    As proof:

    $ rpm -q nptl-devel
    nptl-devel-2.3.4-2.39

    Any other ideas?
  • benoit
    benoit Rennes, France
    Hi,

    Sorry, I didn't notice that you had nptl-devel installed. You have installed the nptl-devel package from your CentOS 4.6 distribution, right?

    I'm afraid I don't understand this error and why the linker is looking for /lib/tls/i486/libpthread.so.0. On my CentOS 4.6 installation, libpthread.so.0 is located in /lib/tls:
    [benoit@xps cpp]$ ldd lib/libSlice.so
            ...
            libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00111000)
            ...
    [benoit@xps cpp]$ ldd bin/slice2cpp
            ...
            libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00111000)
            ...
    

    It sounds like an issue with your OS or compiler installation. You could try compiling and linking a sample program with -lpthread (with and without -L/usr/lib/nptl) and see if it works.

    Cheers,
    Benoit.
  • CentOS 4.6 comes with two versions of the nptl RPM.
    $ ls -l /media/cdrom/CentOS/RPMS/nptl*
    -r--r--r--  2 root root 905821 Nov 18  2007 /media/cdrom/CentOS/RPMS/nptl-devel-2.3.4-2.39.i386.rpm
    -r--r--r--  2 root root 947773 Nov 18  2007 /media/cdrom/CentOS/RPMS/nptl-devel-2.3.4-2.39.i686.rpm
    

    When I installed the i386 version of the RPM, I received the error.
    making all in slice2cpp
    make[3]: Entering directory `/home/stwhit/Ice-3.3.0/cpp/src/slice2cpp'
    c++ -c -I. -I../../include  -ftemplate-depth-128 -Wall -D_REENTRANT -I/usr/include/nptl -fPIC -g  Gen.cpp
    c++ -c -I. -I../../include  -ftemplate-depth-128 -Wall -D_REENTRANT -I/usr/include/nptl -fPIC -g  Main.cpp
    rm -f ../../bin/slice2cpp
    c++ -Wl,--enable-new-dtags -Wl,-rpath,/opt/Ice-3.3/lib  -ftemplate-depth-128 -Wall -D_REENTRANT -I/usr/include/nptl -fPIC -g  -L../../lib  -o ../../bin/slice2cpp Gen.o Main.o -lSlice -lIceUtil -L/usr/lib/nptl -lpthread -lrt
    /usr/bin/ld: cannot find /lib/tls/i486/libpthread.so.0
    collect2: ld returned 1 exit status
    make[3]: *** [../../bin/slice2cpp] Error 1
    make[3]: Leaving directory `/home/stwhit/Ice-3.3.0/cpp/src/slice2cpp'
    make[2]: *** [all] Error 1
    make[2]: Leaving directory `/home/stwhit/Ice-3.3.0/cpp/src'
    make[1]: *** [all] Error 1
    make[1]: Leaving directory `/home/stwhit/Ice-3.3.0/cpp'
    make: *** [all] Error 1
    

    Next, I uninstalled the i386 version of the nptl RPM and installed the i686 version, and now the compile is working.

    So, I'm curious - is this expected? Which version of the RPM do you have installed?

    Thanks again!
  • benoit
    benoit Rennes, France
    Hi,

    Yes, I think it's expected. Most likely the architecture of the nptl-devel you install needs to match the architecture of the glibc package. The installer probably installed the i686 glibc RPM on your machine so you need to use the i686 nptl-devel. ("rpm -qil glibc | grep pthread" should show the pthread library in a i686 directory).

    Cheers,
    Benoit.