Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
U
understanding makefile
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CAPACES Nicolas
understanding makefile
Commits
67a9019b
Commit
67a9019b
authored
1 year ago
by
CAPACES Nicolas
Browse files
Options
Downloads
Patches
Plain Diff
modified structure Makefile
parent
9a748595
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
Makefile
+60
-27
60 additions, 27 deletions
Makefile
base64.c
+1
-1
1 addition, 1 deletion
base64.c
main.c
+1
-1
1 addition, 1 deletion
main.c
with
62 additions
and
29 deletions
Makefile
+
60
−
27
View file @
67a9019b
#compilatior
#programms
#---------------
# les programmes utilisés par le Makefile
#---------------
#je remarque que j'ai different résultat selon le symbole d'affectation
#si je met := gcc alors il utilise gcc comme compilateur
#si je met ?= gcc alors il utilise cc comme compilateur
CC
:=
gcc
CC
?=
gcc
RM
?=
rm
LN
?=
ln
INSTALL
?=
install
#flags
#---------------------
# les differents drapeaux que j'utilise pour la compilation
#---------------------
CFLAGS
?=
-O3
-Wall
-Wextra
-Wpedantic
SO
FLAGS
?=
-g
-fPIC
L
FLAGS
?=
-g
-fPIC
#flag vers la librarie personnelle
#MFLAG pour "Made Flag"
MFLAGS
:=
-lbase64
...
...
@@ -19,63 +25,92 @@ MFLAGS := -lbase64
# ce qu'il faut complier
#----------------------
LSRCS
:=
base64.c
#ceci nous donne : base64.o
LOBJS
:=
$(
LSRCS:.c
=
.o
)
ISRCS
:=
base64.h
SRCS
:=
main.c
#objets
#------------------
# les objets compilés
#------------------
OBJS
:=
$(
SRCS:.c
=
.o
)
#ceci nous donne : base64.o
LOBJS
:=
$(
LSRCS:.c
=
.o
)
#versions
#--------------------
# la version de la librairie
#-------------------
VMAJ
OR
:=
1
VMIN
OR
:=
0
VPAT
CH
:=
1
VMAJ
:=
1
VMIN
:=
0
VPAT
:=
1
#chemins
#-----------------------
# les differents chemins utilisés dans le programme
#-----------------------
prefix
:=
/usr/local
#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/
#en revanche il faudra utiliser sudo pour être utilisés
LPATH
:=
/usr/local
/lib
/
LPATH
:=
$(
prefix
)
/lib
#je met le header dans un chemin que le preprocesseur peux reconnaitre avec les chevrons dans le code C
IPATH
:=
/usr/local/include/
IPATH
:=
$(
prefix
)
/include
#noms
#-------------------
# des noms differents
#-------------------
LNAMES
:=
libbase64.so
SONAMES
:=
$(
LNAMES
)
.
$(
VMAJOR
)
#targets
LTARGETS
:=
libbase64.so
#ceci se casse dès qu'il y a plus d'une valeur dans LTARGET
LFULLTARGETS
:=
$(
LPATH
)$(
LTARGETS
)
.
$(
VMAJOR
)
.
$(
VMINOR
)
.
$(
VPATCH
)
#--------------------
# les buts de compilation
#--------------------
LTARGETS
:=
$(
LNAMES
)
.
$(
VMAJ
)
.
$(
VMIN
)
.
$(
VPAT
)
TARGETS
:=
out
IFULLTARGETS
:=
$(
IPATH
)$(
ISRCS
)
#installs
#-----------------------
# les fichiers finaux
#-----------------------
IINSTALL
:=
$(
IPATH
)
/
$(
ISRCS
)
#ceci se casse dès qu'il y a plus d'une valeur dans LTARGET
LINSTALL
:=
$(
LPATH
)
/
$(
LNAMES
)
#pour éviter à ce que make soit confu si je met un fichier nommé "all", "clean" ou "totalClean" dans ce repertoire
.PHONY
:
all clean totalClean
#les dependences sont executés de gauche à droite
#il vérifie la dépendance la plus à gauche et vérifie ses dépendances. une fois satisfaites, il passe à la dépendance suivante.
#je ne sais pas si c'est l'implementation de make
#je ne trouve pas l'information dans la documantation
#la documentation : https://www.gnu.org/software/make/manual/make.html
all
:
$(I
FULLTARGETS) $(LFULLTARGETS
) $(TARGETS)
all
:
$(I
INSTALL) $(LINSTALL
) $(TARGETS)
@
echo
---Compiling
successful---
clean
:
$(
RM
)
*
o
$(
RM
)
$(
OBJS
)
$(
LOBJS
)
$(
LTARGETS
)
totalClean
:
clean
sudo
$(
RM
)
$(
LFULLTARGETS
)
$(
LPATH
)$(
LTARGETS
)
$(
LPATH
)$(
LTARGETS
)
.
$(
VMAJOR
)
$(
IFULLTARGETS
)
$(
TARGETS
)
sudo
$(
RM
)
$(
LINSTALL
)
$(
LINSTALL
)
.
$(
VMAJ
)
$(
LINSTALL
)
.
$(
VMAJ
)
.
$(
VMIN
)
.
$(
VPAT
)
$(
IINSTALL
)
$(
TARGETS
)
$(LFULLTARGETS)
:
$(LOBJS)
sudo
$(
CC
)
$(
CFLAGS
)
$(
SOFLAGS
)
-shared
-Wl
,-soname,
$(
LTARGETS
)
.
$(
VMAJOR
)
$^
-o
$@
$(IINSTALL)
:
$(ISRCS)
sudo
$(
INSTALL
)
--mode
=
444
$<
$@
$(LINSTALL)
:
$(LTARGETS)
#ld ne cherche que le nom libbase64.so dans les dossiers de "linkage", il faut donc créer des liens symboliques vers la librarie
sudo ln -s $(LFULLTARGETS) $(LPATH)$(LTARGETS).$(VMAJOR) #on peux aussi faire
:
sudo ldconfig
sudo ln
-s
$(
LPATH
)$(
LTARGETS
)
.
$(
VMAJOR
)
$(
LPATH
)$(
LTARGETS
)
#je ne connais pas de commande équvalente
sudo
$(INSTALL)
--mode
=
544
$<
$@
.
$(
VMAJ
)
.
$(
VMIN
)
.
$(
VPAT
)
#on peux aussi faire : sudo ldconfig
#je ne sais pas si utiliser des if et test dans un Makefile veut dire que je suis allé trop loin ou pas assez
if
!
[
-h
$@.$(VMAJ)
];
then
sudo
$(LN)
-s
$@.$(VMAJ).$(VMIN).$(VPAT)
$@.$(VMAJ)
;
fi
#je ne connais pas de commande équvalente
if
!
[
-h
$@
];
then
sudo
$(LN)
-s
$@.$(VMAJ)
$@;
fi
$(LTARGETS)
:
$(LOBJS)
$(
CC
)
$(
CFLAGS
)
-shared
-Wl
,-soname,
$(
SONAMES
)
$<
-o
$@
#la compilation fonctionne
#le programme ne fonctionne pas
...
...
@@ -85,11 +120,9 @@ $(TARGETS): $(OBJS)
$(
CC
)
$(
CFLAGS
)
$^
-o
$@
$(
MFLAGS
)
#deplacement des headers
$(IFULLTARGETS)
:
$(ISRCS)
sudo cp
$^
$@
$(LOBJS)
:
$(LSRCS)
$(
CC
)
$(
CFLAGS
)
$(
SO
FLAGS
)
-c
$
^
-o
$@
-lc
$(
CC
)
$(
CFLAGS
)
$(
L
FLAGS
)
-c
$
<
-o
$@
$(OBJS)
:
$(SRCS)
#$^ sont toutes les dépendances
...
...
This diff is collapsed.
Click to expand it.
base64.c
+
1
−
1
View file @
67a9019b
...
...
@@ -6,7 +6,7 @@
*****************************************/
#include
<sys/types.h>
#include
<stdint.h>
#include
<stddef.h>
#include
<stdlib.h>
#include
<string.h>
...
...
This diff is collapsed.
Click to expand it.
main.c
+
1
−
1
View file @
67a9019b
...
...
@@ -8,7 +8,7 @@
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#include
<stdint.h>
#include
<base64.h>
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment