Makefile pour une bibliothèque

Je dois exécuter ces 4 commandes sur le terminal chaque fois que je veux exécuter le programme à l’aide de bibliothèques.

Les lignes sont

cc -m32 -c mylib.c ar -rcs libmylib.a mylib.o cc -m32 -c prog.c cc -m32 prog.o -L. -lmylib ./a.out 

Comment créer un fichier makefile pour les commandes ci-dessus et l’exécuter? Une procédure détaillée serait appréciée. Merci.


Edit: Voici la solution:

 a.out: prog.o libmylib.a cc prog.o -L. -lmylib prog.o: prog.c mylib.h libprint_int.a: mylib.o ar -rcs libmylib.a mylib.o print_int.o: mylib.c mylib.h clean: rm a.out prog.o libmylib.a mylib.o 

Cela a donné une erreur sur la ligne 2 parce que j’ai utilisé des espaces au lieu de tabulation.

    Quelque chose comme:

     program_NAME := a.out SRCS = mylib.c prog.c .PHONY: all all: $(program_NAME) $(program_NAME): $(SRCS) ar -rcs libmylib.a mylib.o cc -m32 prog.o -L. -lmylib 

    pourrait vous aider à démarrer

    Je viens juste de commencer à utiliser moi-même les makefiles et je pense qu’ils sont assez compliqués, mais une fois que vous les faites travailler, ils facilitent la vie beaucoup plus facilement (ceux-ci sont remplis de bugs, mais certains des plus expérimentés du monde des SO pourront probablement les aider à les réparer)

    En ce qui concerne l’exécution, assurez-vous de sauvegarder le fichier en tant que ‘Makefile’ (la casse est importante)

    puis à partir de la ligne de commande (assurez-vous de vous connecter au répertoire contenant le fichier Makefile):

     $ make 

    c’est tout!

    METTRE À JOUR

    si la bibliothèque statique intermédiaire est superflue, vous pouvez la sauter avec un fichier Makefile comme ceci:

     program_NAME := a.out SRCS = mylib.c prog.c OBJS := ${SRCS:.c=.o} CFLAGS += -m32 program_INCLUDE_DIRS := program_LIBRARY_DIRS := program_LIBRARIES := mylib CPPFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir)) LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir)) LDFLAGS += $(foreach library,$(program_LIBRARIES),-l$(library)) CC=cc LINK.c := $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) .PHONY: all all: $(program_NAME) $(program_NAME): $(OBJS) $(LINK.c) $(program_OBJS) -o $(program_NAME) 

    Le tutoriel le plus simple pour comprendre les fichiers de création est disponible dans Cprogramming.com . Une fois que vous avez fini de le comprendre, vous pouvez consulter le manuel Make File .

    Je pense qu’il n’y a pas de procédure plus détaillée que la documentation officielle de la commande make: http://www.gnu.org/software/make/manual/make.html#Overview

    Fondamentalement, vous devrez créer une cible et y mettre vos commandes. La cible peut être “all” si vous voulez que cela fonctionne lorsque vous tapez “make”. Un bon makefile utilisera sûrement des variables, etc. pour restr flexible sur les additions lib / sources.