[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Make: puzzeling make behaviour ?
From: |
Henrik Carlqvist |
Subject: |
Re: Make: puzzeling make behaviour ? |
Date: |
Tue, 20 Feb 2007 08:01:53 +0100 |
User-agent: |
Pan/0.14.2 (This is not a psychotic episode. It's a cleansing moment of clarity.) |
B Thomas <thomasb@no.email.com> wrote:
> I changed the build rule to
>
> build: $(PROGRAMS)
> $(CC) $(CFLAGS) $(LDFLAGS) -o "$<" "$<".c
>
> Shouldn't this work ? However I still have
> the same problem.
The problem remains because make thinks like this:
1) It wants to create a file named "build". To create the file "build" it
thinks it has a command line which you have specified.
2) Before it can create "build" it will have to create $(PROGRAMS). There
is no rule that specifies how to create $(PROGRAMS) so it uses a built in
rule.
> This make file rule or something else results in :
> gcc -I/home/bt/include -L/usr/X11R6/lib -lX11 -lGL -lGLU -lm
> -L/home/bt/lib -lgltk Hello_World.c -o Hello_World
So make has a built in rule on how to build a program from a C source. If
you still want to call your target "build" the right way to do this would
be something like:
build: $(PROGRAMS)
%: %.c
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
Above "build" depends on $(PROGRAMS) and a custom rule has been specified
how programs are built from C source. The fact that no file named "build"
is created is no problem. This is how Makefiles are usually written.
However, the de-facto standard for the default rule is usually "all"
instead of "build", but you are free to call the rule whatever you want.
> Output of nm/ar commands is as follows :
Your output from nm and ar looks fine, once you get the right command done
by make the library will probably be usable.
regards Henrik
--
The address in the header is only to prevent spam. My real address is:
hc1(at)poolhem.se Examples of addresses which go to spammers:
root@localhost postmaster@localhost