2016-06-06 21 views
0

Ich habe versucht das Plugin Beispiel in der Datei Makefile-Dokumentation (https://www.gnu.org/software/make/manual/make.html) gegeben zu kompilieren:Wie kompiliere ich ein Makefile-Plugin?

#include <stdlib.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <unistd.h> 
#include <errno.h> 

#include <gnumake.h> 

int plugin_is_GPL_compatible; 

char * 
gen_tmpfile(const char *nm, int argc, char **argv) 
{ 
    int fd; 

    /* Compute the size of the filename and allocate space for it. */ 
    int len = strlen (argv[0]) + 6 + 1; 
    char *buf = gmk_alloc (len); 

    strcpy (buf, argv[0]); 
    strcat (buf, "XXXXXX"); 

    fd = mkstemp(buf); 
    if (fd >= 0) 
    { 
     /* Don't leak the file descriptor. */ 
     close (fd); 
     return buf; 
    } 

    /* Failure. */ 
    fprintf (stderr, "mkstemp(%s) failed: %s\n", buf, strerror (errno)); 
    gmk_free (buf); 
    return NULL; 
} 

int 
mk_temp_gmk_setup() 
{ 
    /* Register the function with make name "mk-temp". */ 
    gmk_add_function ("mk-temp", gen_tmpfile, 1, 1, 1); 
    return 1; 
} 

aber beim Laufen die folgende Zeile: gcc -c mk_temp.c -fPIC, ich Nachricht erhalten folgende Fehlermeldung:

mk_temp.c:8:21: fatal error: gnumake.h: No such file or directory

Ich konnte diese Datei nicht in meinem Computer finden. Ich habe sogar die Makefile 3.8.1 (die gleiche Makefile-Version, die ich installiert habe) heruntergeladen, ist aber auch nicht da.

Wer weiß, wie man diese Datei bekommt oder was mache ich falsch?

Danke, Andrés.

Antwort

1

v3.81 ist zu alt. gnumake.h erscheint in GNU make 4.0

+0

Um absolut klar zu sein, '3.8.1' ist nicht einmal eine gültige GNU make-Version. Du meinst '3.81', nicht' 3.8.1'. – MadScientist

+0

@MadScientist In der Tat. Fest. –

Verwandte Themen