Cluster-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Dake <sdake@redhat.com>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] [PATCH] Avoid link failure...
Date: Sat, 20 Jun 2009 09:23:43 -0700	[thread overview]
Message-ID: <1245515023.22658.8.camel@localhost.localdomain> (raw)
In-Reply-To: <1245501153.3665.333.camel@cerberus.int.fabbione.net>

On Sat, 2009-06-20 at 14:32 +0200, Fabio M. Di Nitto wrote:
> Hi Jim,
> 
> On Fri, 2009-06-19 at 19:19 +0200, Jim Meyering wrote:
> > When building from sources (master.git), against just-installed-to-
> > private hierarchy headers/libs from corosync and openais, I get this
> > failure:
> > 
> > libtool: link: gcc -I/p/p/coro/include -g -O2 -O2 -ggdb3 -Wall -Wshadow -Wmissin
> > g-prototypes -Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-stat
> > ement -Wpointer-arith -Wwrite-strings -Wcast-align -Wbad-function-cast -Wmissing
> > -format-attribute -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-lon
> > g -Wno-strict-aliasing -o confdb2ldif confdb2ldif-confdb2ldif.o  -L/p/p/coro/lib
> >  -lconfdb
> > /usr/bin/ld: warning: libcoroipcc.so.4, needed by /p/p/coro/lib/libconfdb.so, no
> > t found (try using -rpath or -rpath-link)
> > /p/p/coro/lib/libconfdb.so: undefined reference to `coroipcc_fd_get at COROSYNC_COR
> > OIPCC_3.0'
> > /p/p/coro/lib/libconfdb.so: undefined reference to `coroipcc_dispatch_get'
> > /p/p/coro/lib/libconfdb.so: undefined reference to `coroipcc_dispatch_put'
> > /p/p/coro/lib/libconfdb.so: undefined reference to `coroipcc_service_connect at COR
> > OSYNC_COROIPCC_3.0'
> > /p/p/coro/lib/libconfdb.so: undefined reference to `coroipcc_msg_send_reply_rece
> > ive at COROSYNC_COROIPCC_3.0'
> > /p/p/coro/lib/libconfdb.so: undefined reference to `coroipcc_service_disconnect@
> > COROSYNC_COROIPCC_3.0'
> > collect2: ld returned 1 exit status
> > make[3]: *** [confdb2ldif] Error 1
> > make[3]: Leaving directory `/h/meyering/w/co/cluster/config/tools/ldap'
> > make[2]: *** [all-recursive] Error 1
> > make[2]: Leaving directory `/h/meyering/w/co/cluster/config/tools'
> > make[1]: *** [all-recursive] Error 1
> > make[1]: Leaving directory `/h/meyering/w/co/cluster/config'
> > make: *** [all-recursive] Error 1
> > [Exit 2]
> 
> I am able to reproduce this error, but there is something that I don't
> like about it.
> 
> When installing in different prefixes, isn't the user supposed to update
> LD_LIBRARY_PATH accordingly?
> 
> Once I set LD_LIBRARY_PATH to include the new prefix, this error doesn't
> show because the linker can find libcoroipcc.
> 
> ldap config doesn't use any symbol from coroipcc directly, but only via
> libconfdb that is correctly linked.
> 
> I don't believe that linking ldap tools with coroipcc is the right
> solution, but I am ready to be proven wrong tho.
> 
> In any case, if we really need to link manually with coroipcc, can we
> use PKG_CONFIG rather than manual linking?
> 

Using the rpath-link linker option passed via gcc when the link path is
not ld.so.conf (or using all the time) would probably solve this
problem.  Another option is LD_LIBRARY_PATH override during build.

The root of the problem is confdb links internally to coroipcc.so.  When
the gnu linker finds one of these internal dependencies, it immediately
adds it internally to the list of objects to link to.  If it can't find
the object, the symbols will not be found.

The problem with rpath-link is it is not portable and only works with
gnu linkers so it is difficult to add it directly to the pkgconfig in
corosync until we sort out libtool.

Regards
-steve

> Thanks
> Fabio
> 



  reply	other threads:[~2009-06-20 16:23 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-19 17:19 [Cluster-devel] [PATCH] Avoid link failure Jim Meyering
2009-06-20 12:32 ` Fabio M. Di Nitto
2009-06-20 16:23   ` Steven Dake [this message]
2009-06-20 17:57     ` Fabio M. Di Nitto
2009-06-21  8:18       ` Jim Meyering
2009-06-21  8:26         ` Fabio M. Di Nitto
2009-06-21 13:08           ` Jim Meyering

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1245515023.22658.8.camel@localhost.localdomain \
    --to=sdake@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox