Go to the first, previous, next, last section, table of contents.

## Suffix Rules for Archive Files

You can write a special kind of suffix rule for dealing with archive files. See section Old-Fashioned Suffix Rules, for a full explanation of suffix rules. Archive suffix rules are obsolete in GNU `make`, because pattern rules for archives are a more general mechanism (see section Implicit Rule for Archive Member Targets). But they are retained for compatibility with other `make`s.

To write a suffix rule for archives, you simply write a suffix rule using the target suffix ``.a'` (the usual suffix for archive files). For example, here is the old-fashioned suffix rule to update a library archive from C source files:

    .c.a:
            $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
            $(AR) r $@ $*.o
            $(RM) $*.o

This works just as if you had written the pattern rule:

    (%.o): %.c
            $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $*.o
            $(AR) r $@ $*.o
            $(RM) $*.o

In fact, this is just what `make` does when it sees a suffix rule with ``.a'` as the target suffix. Any double-suffix rule ``.x.a'` is converted to a pattern rule with the target pattern ``(%.o)'` and a dependency pattern of ``%.x'`.

Since you might want to use ``.a'` as the suffix for some other kind of file, `make` also converts archive suffix rules to pattern rules in the normal way (see section Old-Fashioned Suffix Rules). Thus a double-suffix rule ``.x.a'` produces two pattern rules: ``(%.o): %.x'` and ``%.a: %.x'`.

Go to the first, previous, next, last section, table of contents.