Thanks John,Madhav.

On Thu, Oct 15, 2009 at 11:44 AM, John Calcote <[email protected]>wrote:

>  Hi Madhav,
>
> On 10/15/2009 8:03 AM, Madhav Ancha wrote:
>
> Hi,
>
>     When I run the linker through the command line like this, it works.
>       g++ -g -pg -fprofile-arcs -ftest-coverage -Lrelease1 -o testApp
> file.o -lSharedLib
>
>    But when i run from a make file with the follow equivalent commands, it
> does not. It gives the error reproduced below. can you help debug the
> cause.
>
>       LINK_FLAGS= -g -pg -fprofile-arcs -ftest-coverage -fPIC -Lrelease1
>       testApp: file.o -lSharedLib
>       $(CXX) $(LINK_FLAGS) -o $@ $^
>
>  Error:
>      make: *** No rule to make target `-lSharedLib', needed by `testApp'.
>  Stop.
>
>
> A makefile contains rules and command (and other things). Rules are lists
> of targets, followed by separator (colon, double-colon, etc), followed by
> lists of dependencies. Commands are lines prefixed with a TAB character. In
> your rule, you have a linker option (-lSharedLib) in your dependency list.
> The target list and the dependency list must only contain file names, or
> macros that resolve to file names, or patterns (containing '%' or '*'
> characters) that can match file names. You can't put anything else into
> either the target or dependency list. What you probably wanted to write was
> this (untested):
>
> LINK_FLAGS= -g -pg -fprofile-arcs -ftest-coverage -fPIC -Lrelease1
> testApp: file.o
>  $(CXX) $(LINK_FLAGS) -o $@ file.o -lSharedLib
>
> Note that I changed $^ to file.o in the command line because $^ is not
> portable between various flavors of make.
>
> John
>
_______________________________________________
Help-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-make

Reply via email to