Skip to content
Snippets Groups Projects
Commit 678f4488 authored by CAPACES Nicolas's avatar CAPACES Nicolas
Browse files

nouvelle configuration Makefile

parent a7ea7008
No related branches found
No related tags found
No related merge requests found
...@@ -3,12 +3,24 @@ CFLAGS := -O3 -Wall -Wextra -Wpedantic ...@@ -3,12 +3,24 @@ CFLAGS := -O3 -Wall -Wextra -Wpedantic
LFLAGS := -O3 -Wall -Wextra -Wpedantic -fPIC LFLAGS := -O3 -Wall -Wextra -Wpedantic -fPIC
#il n'est pas obligé d'utiliser ce chemin, car cela vas demander d'utiliser "sudo make" ce qui faudrait éviter pour voir ce que ça fait si on compile #il n'est pas obligé d'utiliser ce chemin, car cela vas demander d'utiliser "sudo make" ce qui faudrait éviter pour voir ce que ça fait si on compile
#je cherche juste à mettre les librairies partagées dans un endroit où le linker trouvera automatiquement #je met la librairie dans un chemin reconnu par ldconfig
#je peux voir ceci avec la commande suivante: <$sudo ldconfig -v>
#je peux reseigner ce chemin à ld avec un fichier dans /etc/ld.so.conf.d/
LPATH := /usr/local/lib/ LPATH := /usr/local/lib/
LSRCS := mars.c LSRCS := mars.c
LOBJS := $(LSRCS:.c=.o) LOBJS := $(LSRCS:.c=.o)
LTARGET := $(LPATH)libmars.so.1.0.1 #le linker ne semble pas chercher libmars.so.1 mais que libmars.so
LNAME := libmars.so.1 #il ne trouve pas avec le soname
#je veux voir ceci avec la commande <$ld -lmars --verbose>
#je ne sais pas si je peux faire en sorte que ld cherche des librairie avec des versions à la fin
#ça doit être possible, vu qu'il trouve /lib/x86_64-linux-gnu/libc.so.6, qui a une version à la fin
#esc-ce que la libraire doit être un executable?
LNAME := $(LPATH)libmars.so
LSONAME := libmars.so.1
LVMAJOR := 1
LVMINOR := 0
LVPATCH := 1
LTARGET := $(LNAME).$(LVMAJOR).$(LVMINOR).$(LVPATCH)
TARGET := out TARGET := out
SRCS := main.c SRCS := main.c
...@@ -26,16 +38,19 @@ ITARGET := $(IPATH)$(INCLUDE) ...@@ -26,16 +38,19 @@ ITARGET := $(IPATH)$(INCLUDE)
#je souhaite compiler la librairie avec un nom dans un endroit standard où le linker pourra le trouver automatiquement #je souhaite compiler la librairie avec un nom dans un endroit standard où le linker pourra le trouver automatiquement
$(LTARGET): $(LOBJS) $(LTARGET): $(LOBJS)
$(CC) $(CFLAGS) -shared -Wl,-soname,$(LNAME) -o $(LTARGET) $(LOBJS) sudo $(CC) $(CFLAGS) -shared -Wl,-soname,$(LSONAME) -o $(LTARGET) $(LOBJS)
#pour generer un lien symbolique avec le soname
sudo ldconfig
#je souhaite compiler un binaire executable qui utilise la librairie #je souhaite compiler un binaire executable qui utilise la librairie
#J'aimerais ne pas avoir besoin à renseigner le -rpath dans le linker utilisé par gcc #J'aimerais ne pas avoir besoin à renseigner le -rpath dans le linker utilisé par gcc
$(TARGET): $(SRCS) $(TARGET): $(SRCS)
$(CC) $(CFLAGS) -Wl,-rpath,$(LPATH) -o $(TARGET) $(SRCS) $(LIBS) $(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(LIBS)
#Je veux mettre le header dans un endroit où on pourra utiliser les chevrons au lieu des guillemets pour l'inclure dans un projet #Je veux mettre le header dans un endroit où on pourra utiliser les chevrons au lieu des guillemets pour l'inclure dans un projet
$(ITARGET): $(INCLUDE) $(ITARGET): $(INCLUDE)
cp $(INCLUDE) $(ITARGET) sudo cp $(INCLUDE) $(ITARGET)
#je compile tous les codes source en objet #je compile tous les codes source en objet
.c.o: .c.o:
$(CC) $(LFLAGS) -c $< -o $@ $(CC) $(LFLAGS) -c $< -o $@
...@@ -46,7 +61,7 @@ $(ITARGET): $(INCLUDE) ...@@ -46,7 +61,7 @@ $(ITARGET): $(INCLUDE)
#2 compiler la librarie #2 compiler la librarie
#3 compiler le programme #3 compiler le programme
#Je vais devoir vérifier si nous pouvons renseigner l'ordre dans le but(goal) all #Je vais devoir vérifier si nous pouvons renseigner l'ordre dans le but(goal) all
all: $(TARGET) $(LTARGET) $(ITARGET) all: $(ITARGET) $(LTARGET) $(LNAME) $(TARGET)
@echo Successful compilation @echo Successful compilation
clean: clean:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment