2010-11-05 37 views
0

Vous cherchez de l'aide pour compiler mon programme ci-dessous. Je reçois un "*** Stop, pas de cibles". erreur lors de la saisie dans limit.makefile dans le tampon du compilateur. Des idées?UNIX - aide de makefile!

int main(int argc, char *argv[]) { 
    struct rlimit limit; 

    limit.rlim_cur = 60000; 


limit.rlim_max = 60000; 

if (setrlimit(RLIMIT_FSIZE, &limit) == -1){ 
    perror("Error preventing core dump, errno=%d\n", errno); 
    exit(1); 
    } 

else { 
    printf("The current core limit is %ll.\n", limit.rlim_cur); 
    printf("The core max limit is %ll.\n", limit.rlim_max); 
    exit(0); 
    } 

    if (getrlimit(RLIMIT_FSIZE, &limit) == -1){ 
    printf("getlimit() failed with errno=%d\n", errno); 
    exit(1); 
    } 


} 

commande Compile: make -k -f limit.makefile C'est ce que je tape pour le tampon du compilateur .... l'erreur persiste cependant.

Makefile:

CC = /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 
+0

Pouvez-vous éditer votre question et mettre le make limit.makefile dans s'il vous plaît? –

+0

Votre fichier makefile ne contient aucun fichier à compiler? – EboMike

+0

limit.c est mon programme qui doit être. Où puis-je ajouter cela? –

Répondre

2

Juste essayé que make -k -f myfile sur un fichier vide et a obtenu votre erreur.

Si vous voulez juste travailler

CC= /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 



all: test.c 
    $(CC) $(CFLAGS) test.c 

Notez que l'onglet sous tous doit être un onglet « réel ».

Je vous recommande de consulter un didacticiel Makefile ou de le compiler depuis la ligne de commande. gcc -g -Wall -std = c99 -O2 -arch x86_64 limite.c

BTW, pas sûr de ce drapeau -arch. Non valide sur ma machine Linux.

+1

L'indicateur -arch est pour Mac OS X.Il vous permet de compiler explicitement pour une architecture 32 bits ou 64 bits. –

1

Essayez

CC = /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 
OBJ = limit.o 

%.o: %.c 
    $(CC) -c -o [email protected] $< $(CFLAGS) 
+0

Toujours en train de sortir anormalement, code de sortie de 2, même erreur ... hmm. –

+0

Toute sortie supplémentaire? – EboMike

0

Vous n'avez pas défini ce que l'objectif de construire est partout. Vous pouvez le faire sur la ligne de commande, en utilisant la commande

make -k -f limit.makefile limit 

et les règles implicites de make compilera limit.c en limit. définir une cible alternative dans votre makefile,

CC = /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 
limit: limit.o 

La première cible sera construit par défaut, et sait faire comment compiler *.c à *.o et les fichiers objet lien pour tout le reste est automatique.

Si vous êtes curieux, les règles par défaut sont équivalentes à (dans GNU make)

%.o:%.c 
    $(CC) $(CPPFLAGS) $(CFLAGS) -c -o [email protected] $< 
%:%.o 
    $(CC) $(LDFLAGS) -o [email protected] $^ $(LDLIBS) 

[email protected], $< et $^ élargir la cible, d'abord prereq et tous prereqs respectivement, les signes de pourcentage sont caractères génériques pour le nom de la cible.

1

EboMike est de plus sophistiqué, mais voici une plus simple qui est garanti à travailler pour votre projet d'un fichier:

CC = /usr/bin/gcc 
CFLAGS = -g -Wall -std=c99 -O2 -arch x86_64 

limit: limit.c 
    $(CC) $(CFLAGS) -o limit limit.c 

Vous pouvez exécuter ce avec juste make par lui-même.

+0

Vous devez ajouter $ (CFLAGS) à l'appel du compilateur, sinon ils ne seront pas utilisés –

+0

Oups, merci :) –