Re: Add a common library

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 16/02/12 16:04 +0100, Fabio M. Di Nitto wrote:
On 2/16/2012 3:58 PM, Vladislav Bogdanov wrote:
16.02.2012 14:50, Fabio M. Di Nitto wrote:
On 2/16/2012 12:36 PM, Jan Friesse wrote:
Fabio M. Di Nitto napsal(a):
On 2/8/2012 9:41 PM, Steven Dake wrote:
On 02/08/2012 12:27 PM, Fabio M. Di Nitto wrote:
On 2/8/2012 8:19 PM, Steven Dake wrote:

Assuming you are upgrading from version X to X+1, the symbols will
simply move from static inline to the share object. Specially in this
case where the application is not affected directly.

application -> libfoo (with static inline)
application -> libfoo -> libcommon

Even in a downgrade case, libcorosync_common would not be
referenced by
any of the libraries.

I don´t have a strong opinion here, but I would prefer to have it a
shared lib. We had some nasty issues with static before (ask Jan how
long it took for him to debug that handle_ corruption when linking
static).


Hey, that handle_ thing was *real* pain. Took like week (40 hours) of
extra hard work.

Exactly.... :)

[BIG FAT SNIP]
You also need to take into account that not all distribution ship all
libraries in one package (corosynclib vs libcpg4 libquorum4). So it´s
not that uncommon as you might think and it leaves a window open for
lots of headaches.

You make your call, but static is bad vs a very small pain to get
applications linked correctly (as they should be) and pkg-config can be
used to ease the pain (tho i am still not sure we should enforce linking
with -lcorosync_common since not all applications use symbols from it).


Ok, it looks like I've misunderstood
http://fedoraproject.org/wiki/UnderstandingDSOLinkChange. So as long as
it works as you said (app using lcpg, but not cs_errorstr DON'Tt need to
link with -common), then shared link solution seems to be better. But if
it doesn't work (ie. lcpg linked with lcommon, app need to link with
both), static approach is better.

I have tested both F16 and rawhide about the same way but by all mean,
we can give it another test round.

Also I don't see reason for pkg-config to include -lcommon.

So one question is, where made Angus mistake so DSO warning appeared
(and whole this thread started)?

I can´t say for sure without doing the exact same build, but with the
branch he published in topic-commonlib, it was working fine.

He probably forgot to link libcpg with libcorosync_common shared at that
stage of testing. The only way to know would be to see ldd libcpg in his
system.

Angus, is it an option for you to revalidate my testing? It´s no point
for me to do it all over again. We need a 3rd party to look at it :)

Sorry for stepping in, but that is absolutely true for new fedora
systems (from that point where indirect linking was prohibited), that
you need to link app against lib *only* if you use symbols from that lib
directly in app (including calls from inline functions defined in
"foreign" header files, may be that was the reason of that warning?).

That´s what my test did show :) but apparently Angus still got somekind
of error during his tests. The point remains that I cannot repeat Angus
test but he can validate the tests i did :)

You *do not* need to link against the whole stack of libs which are used
indirectly, but whose symbols you do not reference.

Exactly. see previous emails in this thread.

I'll give it a go today and let you know.

-A


Fabio
_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss
_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss



[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux