2011-09-08 3 views
3

Si je veux faire un outil de ligne de commande en utilisant makefile pour, dire ce programme C:Faire un outil de ligne de commande du programme C

# include<stdio.h> 

int main() 
{ 
    printf("Hello World!"); 
    return 0; 
} 

Je n'ai pas d'expérience avec des commandes shell makefile ou linux que ce soit. Je commence juste. Quelqu'un peut-il me dire comment s'y prendre?

+3

Je recommande de parcourir quelques tutoriels C et Makefile. –

Répondre

6

Vous n'avez pas vraiment besoin d'un Makefile pour un seul fichier source comme celui-ci - il suffit de le compiler comme ceci:

$ gcc -Wall foo.c -o foo 

Si vous voulez vraiment un makefile que vous pouvez faire quelque chose comme ceci:

# 
# makefile 
# 

foo: foo.c 
    gcc -Wall foo.c -o foo 

puis de la ligne de commande, on pourrait dire:

$ make foo 

ou même

$ make 
+0

Vous pouvez remplacer 'gcc' par' clang' si vous utilisez clang. Pour le Makefile, j'utiliserais au moins 'CC = ' et '$ (CC) -Wall foo.c -o foo', donc vous pouvez facilement changer de compilateur si vous avez plusieurs cibles. Exemple [ici] (http://pastebin.com/7saKiRSd). –

+0

Oui, vous pouvez utiliser '$ (CC)' pour le rendre complètement compilateur-agnostique, et aussi utiliser '$ (CFLAGS)' etc. Je visais la simplicité puisque c'est une question noob. –

+0

Je suis d'accord, mais je pense que c'est une bonne pratique d'apprendre quelque chose sur les macros au début. :) –

1

Makefile:

hello: hello.c 
    gcc -Wall -o hello hello.c 


$ make hello 
$ ./hello 

Vous pourriez bénéficier de this.

De même, il manque un retour à la ligne à votre programme. Vous avez probablement voulu imprimer "Hello World!\n".

+1

ou 'puts (" Bonjour tout le monde! ");' :-) – pmg

2

Je n'ai pas de boîte Unix à portée de main, mais ISTR que make (1) a des règles par défaut qui devraient vous permettre de simplement taper make hello et trouver hello.c et générer un binaire nommé 'hello'. Bien sûr, pour quelque chose de plus compliqué, vous aurez envie de lire sur make (1) ou ses descendants, man make est un bon point de départ.

1
$cat makefile 
main:main.c 
    gcc -o main main.c 

clean: 
    rm main 
Questions connexes