如何使用makefile编译静态库
How to compile a static library using makefile
I want to create a static library using Makefile in linux.
I want to know if this makefile true or not ?
I'm open to other ideas. Thanks all.
NAME= libamqp.a
CC := gcc
CFLAGS := -c -Wall -g
SRCDIR := src
OBJDIR := obj
#definition des fichiers headers
INCLUDES := -I/usr/local/include/ -I/home/tvi/projets/RabbitMQ/libamqp/dlo -I/home/tvi/projets/RabbitMQ/rabbitmq-c/librabbitmq
#definition des librairies
LFLAGS := -L/usr/local/lib64
LDFLAGS :=
LIBS := -L. -lrabbitmq
SRCS_RAW := amqp_connexion.c amqp_consommateur.c amqp_deconnexion.c amqp_producteur.c amqp_outils.c
SRCS := $(addprefix $(SRCDIR)/,$(SRCS_RAW))
OBJS := $(addprefix $(OBJDIR)/,$(SRCS_RAW:.c=.o))
.PHONY: all
all: $(NAME)
@echo "$(MAKE) : Tout est généré"
$(NAME):$(OBJS)
$(CC) $(CFLAGS) $(SRCS) $(INCLUDES) $(LFLAGS) $(LIBS)
ar rcs $(NAME) $(OBJS)
ranlib $(NAME)
$(OBJS): $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
.PHONY: clean
clean:
$(RM) *~ $(NAME)
$(RM) -r $(OBJDIR)
NAME= libamqp.a
CC := gcc
CFLAGS := -Wall -g
SRCDIR := src
OBJDIR := obj
#definition des fichiers headers
INCLUDES := -I/usr/local/include/ -I/home/tvi/projets/RabbitMQ/libamqp/dlo -I/home/tvi/projets/RabbitMQ/rabbitmq-c/librabbitmq
#definition des librairies
LFLAGS := -L/usr/local/lib64
LDFLAGS :=
LIBS := -L. -lrabbitmq
SRCS_RAW := amqp_connexion.c amqp_consommateur.c amqp_deconnexion.c amqp_producteur.c amqp_outils.c
SRCS := $(addprefix $(SRCDIR)/,$(SRCS_RAW))
OBJS := $(addprefix $(OBJDIR)/,$(SRCS_RAW:.c=.o))
#$(info DEBUG: SRCS=$(SRCS))
#$(info DEBUG: OBJS=$(OBJS))
#$(info DEBUG: EXEC=$(EXEC))
.PHONY: all
all: $(NAME)
@echo "$(MAKE) : Tout est genere"
$(NAME):$(OBJS)
ar rcs $(NAME) $(OBJS)
ranlib $(NAME)
#règle pour créer un répertoire d'objets s'il n'existe pas
$(OBJDIR):
mkdir $(OBJDIR)
#définir une règle implicite pour créer des objets dans leur propre répertoire
#(note - ordre uniquement la dépendance sur le répertoire d'objets)
#$< :premier_dependance $@:cible
$(OBJS): $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
.PHONY: clean
clean:
$(RM) *~ $(NAME)
$(RM) -r $(OBJDIR)
I want to create a static library using Makefile in linux.
I want to know if this makefile true or not ? I'm open to other ideas. Thanks all.
NAME= libamqp.a
CC := gcc
CFLAGS := -c -Wall -g
SRCDIR := src
OBJDIR := obj
#definition des fichiers headers
INCLUDES := -I/usr/local/include/ -I/home/tvi/projets/RabbitMQ/libamqp/dlo -I/home/tvi/projets/RabbitMQ/rabbitmq-c/librabbitmq
#definition des librairies
LFLAGS := -L/usr/local/lib64
LDFLAGS :=
LIBS := -L. -lrabbitmq
SRCS_RAW := amqp_connexion.c amqp_consommateur.c amqp_deconnexion.c amqp_producteur.c amqp_outils.c
SRCS := $(addprefix $(SRCDIR)/,$(SRCS_RAW))
OBJS := $(addprefix $(OBJDIR)/,$(SRCS_RAW:.c=.o))
.PHONY: all
all: $(NAME)
@echo "$(MAKE) : Tout est généré"
$(NAME):$(OBJS)
$(CC) $(CFLAGS) $(SRCS) $(INCLUDES) $(LFLAGS) $(LIBS)
ar rcs $(NAME) $(OBJS)
ranlib $(NAME)
$(OBJS): $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
.PHONY: clean
clean:
$(RM) *~ $(NAME)
$(RM) -r $(OBJDIR)
NAME= libamqp.a
CC := gcc
CFLAGS := -Wall -g
SRCDIR := src
OBJDIR := obj
#definition des fichiers headers
INCLUDES := -I/usr/local/include/ -I/home/tvi/projets/RabbitMQ/libamqp/dlo -I/home/tvi/projets/RabbitMQ/rabbitmq-c/librabbitmq
#definition des librairies
LFLAGS := -L/usr/local/lib64
LDFLAGS :=
LIBS := -L. -lrabbitmq
SRCS_RAW := amqp_connexion.c amqp_consommateur.c amqp_deconnexion.c amqp_producteur.c amqp_outils.c
SRCS := $(addprefix $(SRCDIR)/,$(SRCS_RAW))
OBJS := $(addprefix $(OBJDIR)/,$(SRCS_RAW:.c=.o))
#$(info DEBUG: SRCS=$(SRCS))
#$(info DEBUG: OBJS=$(OBJS))
#$(info DEBUG: EXEC=$(EXEC))
.PHONY: all
all: $(NAME)
@echo "$(MAKE) : Tout est genere"
$(NAME):$(OBJS)
ar rcs $(NAME) $(OBJS)
ranlib $(NAME)
#règle pour créer un répertoire d'objets s'il n'existe pas
$(OBJDIR):
mkdir $(OBJDIR)
#définir une règle implicite pour créer des objets dans leur propre répertoire
#(note - ordre uniquement la dépendance sur le répertoire d'objets)
#$< :premier_dependance $@:cible
$(OBJS): $(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
.PHONY: clean
clean:
$(RM) *~ $(NAME)
$(RM) -r $(OBJDIR)