Bibliotheque partagée_ Makefile

kelfons Messages postés 12 Statut Membre -  
 youyou -
Bonjour cher internautes,
je viens vers vous pour quelques précisions pour m'eclairer.
En fait je dois réaliser et installer une bibliothèque partagée en C utilisable à l'autre bout dumonde.
Contexte informatiue :mon poste fait partie d'un reseau de quatre postes, j'ai en charge de réaliser et installer (d'ailleurs installer dans ce cas précis signifie quoi précisement??????????) une bibliothèque partagée C ;les trois postes doivent pouvoir utiiser ma bibliothèque sans se préoccuper de son implémentatio.Etant sous linux, chacun des quatre poste gère une extrations(pour mon poste c'est /nfs_lib_bin) et a accès aux extrapartitions des trois autres.
Architecture : je dois créer( j'ai pensé à être en root , est-ce vraiment necessaire?????) un répertoire Bibliohèque contenant tous les répertoires et fichier, des repertoies Source_C contenant les souces de la biblitoheque et le programme de test , bin pour les exécutabes , lib pour des fichiers de librairie , include pour les prototypes des fonctions(les fameux .h), un repertoire obj contenant le binaires temporaires ,un fichier README expliquant le mode de fonctionnement de la bibliothèqiue, eventuellement son installation , un fichier Makefile aussi.
la bibliothèque peut contenir une simple fonction affichant " bonjour," l'accès devant être mis sur le partage
tout mon souci réside dans l'écriture du makefile, surtout dans l'inclusion des repertoires indiqués plus haut
je voudrais savoir comment(car je sais que c'est possible) définir plusieurs fonctions sources dans le repertoire bibilothéque, par exemple si j'ai l'intention d'ecrire une fonction calculant la factorielle d'un nombre et une autre affichant Bonjour, combien de makefile devrais-je avoir??? comment les écrire??en compilant par la command make, comment le système peut savoir si c'est telle ou telle autre fonction que j'ai l'intention d'utliser ou bien devrais-je mettre touts es foctions contenues dans Bibliothèque (précisement dans Source_C) dans le makefile en tenant compte des differentes dépendances????
Si un des trois poste(en fait un ds utilisateurs) voudrait utiliser une fonction se trouvant ma bibliothèque, il doit tout inclure quoi dans l'en tête de son programme.???Bibliothèque tout simplement? ou le chemin vers ls exécutables ( include "Bibliotheque/bin") aidez-moi s'il vous plaît.
De façons générale quand on veut partager une bibliotque, quelles sont le informations(repertoire obj, bin,Source_S) qu'ont doit rendre accessibles aux utilisateurs????
Concretement j'ai procedé comme ça sous linux : su (pour me mettre en root)
cd /nfs_lib_bin(mon extrapartition)
mkdir Bibliotheque
cd Bibliotheque
mkdir bin include obj Sourc_C
cd Sourc_C
gedit Bonjour.c
#include<stdio.h>
#inlcude'bonjour..h
void Affiche_Bonjour()

printf("bonjour !");
}

cd ../include

gedit bonjour.h

void Affiche_Bonjour();//prototype de la fonction

cd ../Source_C
gedit Test_Bonjour.c
#include<stdio.h>
int main()
{
Affiche_Bonjur();
return 0 ;
}
cd ../../ // là je reviens dans Bibliotheque

gedit Makefile

all Test_bonjour

INC=/nfs_lib_bin/Bibliotheque/include
LIB=/nfs_lib_bin/Bibliotheque/lib
SRC=Source_C
OBJ=obj
BIN=bin
CC=/usr/bin/gcc
OPTIONS=-Wall -ansi -pedanic -O
${BIN}/application : ${SRC}/Test_Bonjour.c
${CC} ${OPTIONS} - o ${BIN}/application ${SRC}/Test_Bonour.c - I ${INC} -L ${LIB} - ???//( ici je dois quoi pour la librairie
go : ${BIN}/application
force :
touch ${SRC}
clean -f ${BIN}/*
en faisant make , j'ai le message << cible introuvable>
regardez de près ce makefile et dtes moi pour quoi ça coince s'il vous plait.
dans l'hypothèse où elle marche ma bibliothèque, comment s'installation se passe sur les trois postes, jai pensé à compresser au format tar pour une livraison eventuelle sà l'autre bout du monde(rire!!!)
si je voudrais ajouter la fonction fctorielle aussi dans a bibliotheque, comment dervaris_jeproceder???
En vous souhaitant bonne lecture

2 réponses

kelfons Messages postés 12 Statut Membre
 
Rebonjour,
cher internautes j'attends tjrs vos réactions
0
youyou
 
le Makfile te permet de créer des exé , .o ou des .a (bibliothèque ) qui s'exécuteront comme des cible

je te donne un exemple , je suis entrain de bosser dessus qui pourra t'être utile:
#############################################"
CC=gcc
CFLAGS=-Wall -ansi -pedantic -O
EXEC=./obj/client
SRC=./src_C
INC=./include
LIB1=./lib/manager
LIB2=./lib/linker

all= $(EXEC)

./bin/client : ./obj/client.o ./lib/manager ./lib/linker #archive
mkdir -p bin
$(CC) -o $@ $^ -Llib -lpthread

./obj/client.o : $(SRC)/client.c $(INC)/client.h $(INC)/link.h
$(CC) -o $@ -c $< $(CFLAGS) -I$(INC)

./obj/manager_clnt.o : $(SRC)/manager_clnt.c $(INC)/client.h
$(CC) -o $@ -c $< $(CFLAGS) -I$(INC)

./obj/link.o :$(SRC)/link.c $(INC)/link.h
$(CC) -o $@ -c $< $(CFLAGS) -I$(INC)

#archive : $(LIB)

$(LIB1) : ./obj/manager_clnt.o
ar cru $@ $^
ranlib $(LIB1)

$(LIB2) : ./obj/link.o
ar cru $@ $^
ranlib $(LIB2)

.PHONY : all clean

clean :
rm -rf $(EXEC) $(SRC)/*~ $(INC)/*~ $(LIB) makefile~ ./bin/*~

##################################################
0