| Wenn Sie eine Datei mit der Endung .c sehen, wissen Sie, dass es sich um eine C-Datei handelt. Vermutlich wissen Sie auch, dass Sie einen C-Compiler aufrufen müssen, um daraus eine Objekt-Datei mit der Endung .o zu generieren. Über die Suffix-Regeln kann man make dieses Wissen, wie es aus einer .c-Datei eine .o-Datei machen soll, beibringen: 
                
                  | 
#
#   Suffix-Regeln fuer C-Programme
#
.SUFFIXES : .c .o .i
.c.o :
        $(CC) -c $<
.c.i :
        $(CC) -E $< > $@
     |  Mit der Zeile .SUFFIXES gibt man dem make-Kommando bekannt, welche Endungen es kennen soll. Sollen außer den drei angegebenen Endungen .c, .o und .i die bereits bekannten Endungen weiter gelten, kann man $(SUFFIXES) noch auf der rechten Seite ergänzen. Nach der Bekanntgabe der Endungen folgen die Suffix-Regeln: Die Regel .c.o gibt an, wie make aus einer .c-Datei eine .o-Datei machen soll, und die Regel .c.i besagt, wie das Ergebnis des Präprozessors in einer Datei mit der Endung .i landet. Beispiel: 
                
                  | user@linux $ make love.i gcc -E love.c > love.i
 |  
 
                
                  | Null-Suffix-Regeln sind daran erkennbar, dass die zweite Endung fehlt: 
                      
                        | 
#   Null-Suffix-Regel
.c:
        $(CC) $< -o $@
      |  Null-Suffix-Regeln kommen dann zum Einsatz, wenn direkt aus einer Quell-Datei ein ausführbares Programm ohne Datei-Endung erzeugt werden soll. Beispiel: 
                      
                        | user@linux $ make love gcc love.c -o love
 |  |  
 
                
                  | Viele Regeln hat make schon eingebaut, nicht nur für C und C++. Die Regeln und Makros können über 
                      
                        | user@linux $ make -p -f /dev/null 
 |  ausgegeben werden. Wie man dabei sieht, gibt es auch für andere Sprachen bereits vordefinierte Regeln. 
                      
                        | Endung | Bedeutung |  
                        | .c | C-Source |  
                        | .cc, .C, .cpp | C++-Source |  
                        | .f | Fortran |  
                        | .gz | komprimierte Datei (gzip) |  
                        | .h | Header-Datei (C, C++) |  
                        | .i | Dateien nach dem Präprozessor-Lauf |  
                        | .l | lex-Dateien |  
                        | .o | Objekt-Dateien |  
                        | .p | Pascal-Dateien |  
                        | .s | Assembler-Dateien |  
                        | .y | yacc-Dateien |  
                        | .Z | komprimierte Dateien (compress) |  |  
 
                
                  | Betrachten wir ein Makefile, das nur aus folgender Regel besteht: 
                      
                        | 
children : mummy.o daddy.o
      |  Dummerweise sind mehrere Suffix-Regeln definiert, wie eine .o-Datei erzeugt werden kann, zum Beispiel aus einer .c-Datei oder aus einer .cpp-Datei oder Datei mit anderer Endung. Wenn nur eine entsprechende .c-Datei da ist, ist alles klar. Aber was, wenn nicht? Dann wird die Such-Reihenfolge durch die SUFFIXES-Liste bestimmt: Es wird zuerst nach einer .c-Regel gesucht (.o nach .o macht keinen Sinn), dann nach einer .cc-Regel und so fort. |  
 
                
                  | Eigene Suffix-Regeln wird man dann einführen, wenn 
                      die eingebauten Regeln nicht ausreichen,man mit den eingebauten Regeln nicht einverstanden ist. |  |