#60 linking to pthread causes errors

Kevin Corry

Compiling evms-2.3.3 didn't work because of a problem
linking with libpthread.a. Complained that
pthread_atfork was undefined reference. Seems there is
only a reference to old_pthread_atfork in libpthread.a,
but there is a reference to pthread_atfork in
libpthread_nonshared.a. Fixed by adding

PTHREAD_LIBS = /usr/lib/libpthread_nonshared.a -lpthread

in make.rules. Not sure if it's distribution specific,
but downloading the glibc/linuxthreads source seems to
say that it's more to do with the default config for
compiling glibc. (?) Not sure if this is a bug, because
I didn't see any references in the mailing list, and
I'm not sure if this actually fixes anything or just
creates a potential error. I was also unable to find
anything in the documentation, though I could've
overlooked it. Hopefully, someone else will not have to
go through the same frustration to get evms to compile,
if this is indeed a quasi-bug.

glibc was version 2.3.2


  • Kevin Corry
    Kevin Corry

    Logged In: YES

    I don't believe we've ever experience this problem while
    building EVMS, and I don't believe this bug has been
    reported before.

    Please attach the output from "./configure" and "make" on
    your system so we can see exactly where the build is
    failing. Also, which architecture and distro are you using?

  • JC

    Logged In: YES

    Sorry it's been so long. Here are the outputs of configure
    && make from evms-2.3.4. (NOTE: this is a newer version than
    in previous post.)

    Arch: x86 (amd smp: nothing out of the ordinary)
    distro: Slackware 9.1

    In summary, the build is failing at the link stage. The only
    file that makes a reference to pthread_atfork that I could
    find is "engine/engine.c". The build fails when linking
    worker.o (engine/worker/worker.c) with libpthread and libevms.

    I don't think there's a real "bug" in evms or in the
    Slackware distro. As I mentioned previously, it looks like
    something straight from glibc, which I don't claim to
    understand, and Slackware, in general, doesn't do a lot of
    customization of source.

    I hope this

  • JC

    Output of configure && make