[Top][All Lists]

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

Re: How to specify a library as dependecy to a executable

From: ittium
Subject: Re: How to specify a library as dependecy to a executable
Date: Fri, 16 Dec 2011 20:33:09 +0530

On Fri, Dec 16, 2011 at 6:58 PM, Stefano Lattarini <
address@hidden> wrote:

> On Friday 16 December 2011, ittium  wrote:
> >
> > thanks Stefano, I think, I could not explain the issue clearly.
> >
> No, you did explain yourself quite clearly and correctly, but I have
> probably been too much terse in my answer.  Let's see whether I've done
> better this time ...
> > I have a
> > build system which build libraries followed by some binaries (libraries
> and
> > binaries reside in different directories), these binaries link with
> > libraries earlier built. If I change some source file in library, library
> > will be recompiled. What I want is when make file for executable find out
> > some library has changed, It should relink automatically on calling make.
> >
> I had understood your use case quite correctly then.
> > bin_PROGRAMS=fooclient fooserver
> > fooclient_SOURCES=source/foo_client_main.cpp
> > fooserver_SOURCES=source/foo_server_main.cpp
> > INCLUDES=-I./include
> Question: what is the expected value of $(ROOT_DIR) below?
> > fooclient_LDADD=-L$(ROOT_DIR)/protocol_handlers/net_handler
> > fooserver_LDADD=-L$(ROOT_DIR)/protocol_handlers/net_handler
> >
> Ah-ah, you are using `-L' in fooserver_LDADD.  This might be what is
> causing your problem.  In fact, the documentation I had linked in my
> previous reply reads:
>  prog_LDADD is inappropriate for passing program-specific linker
>  flags (except for -l, -L, -dlopen and -dlpreopen). So, use the
>  prog_LDFLAGS variable for this purpose.
> > In above case if any of the library mentioned in LDADD
> > (here libnet_handler.a) change, I want automatic relinking of
> > binaries assuming source files for binary have not changed
> >
> Try to use this:
>   fooclient_LDADD = $(ROOT_DIR)/protocol_handlers/libnet_handler.a
>   fooserver_LDADD = $(ROOT_DIR)/protocol_handlers/libnet_handler.a
> Then the relinking you want to see should happen automatically (and
> this should work even if $(ROOT_DIR) is defined at configure time
> rather than at automake time, BTW).  If this doesn't happen, than I
> have misunderstood something, or you have found a bug in automake;
> in any case, let me know, and we'll try to work out the problem.
> Regards,
>  Stefano

You guessed it write, I was not seeing the expected behavior because of -L.
It is working fine after making the changes as you suggested.
thanks a lot. You made my day.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]