Pages : 1
#1 Le 15/07/2012, à 07:05
- Daemos
creation de bibliotheque
Bonjour
je suis en stage et débute sous ubuntu
je dois réaliser une bibliothèque ubuntu
quelqu'un 'un pourrait m aider dans un premier temps a me donner la procédure pour réaliser cette bibliothèque
merci d avance pour votre aide
Hors ligne
#2 Le 15/07/2012, à 10:04
- Haleth
Re : creation de bibliotheque
Ben
- tu codes (j'imagine que tu connais ?)
- tu compiles (j'imagine que tu connais ? avec gcc, y'a des options pour faire une lib)
Stoo
Par exemple:
gcc -c file.c
gcc -o file.so -shared file.o
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
#3 Le 15/07/2012, à 11:43
- Daemos
Re : creation de bibliotheque
rebonjour
merci de m avoir répondu mais je n arrive pas à faire la différence entre le terme bibliothèque et paquets sous linux
il existe deux types de bibliotheques statique ou partages pour vous quel le plus approprier
2 répertoires ou sont les biblio dans /lib et /usr/lib merci de me confirmer si je ne me trompe pas.
comment reconnaître ces biblio est ce par exemple par lib.so?
ce que je cherche c est comprendre le processus/demarche pour créer ma propre bibliotheque de facon a ce que les utilisateur puisse accéder
si vous aviez la procedure pour créer cette bibliotheque
merci d avance pour votre aide
Hors ligne
#4 Le 15/07/2012, à 12:29
- Haleth
Re : creation de bibliotheque
Tu fait erreur
Y'a pas de rapport étroit entre lib & package
Un package est un ensemble de fichier, généralement un programme (ou une lib, mais pas que)
Une bibliotheque est un (ou plusieurs) fichiers compilés, pouvant être utilisés dans des programmes compilés (lib dynamique) ou pour compiler des programmes (lib static)
Faire une lib, c'est compiler ton code de facon à ce que ce dernier puisse être utilisé par des programmes
Prenons un exemple
int main(int argc, char *argv[]){
toto(5);
return(0);
}
Ce code ne compile pas, parcque toto n'est pas déclaré
Une solution est la suivante (la fonction toto peut-être dans un autre fichier):
void toto(int i){
blablabla
}
int main(int argc, har *argv[]){
toto(5);
return(0);
}
C'est bien si tu as fait la fonction toto, ou si cette fonction n'est utilisé que dans ce programme
Cependant, si ta fonction est utilisé dans 15 programmes différents, tu vas devoir la compiler à chaque fois
Donc, la solution est la suivante (lib):
Fichier lib.c:
void toto(int i){
blablabla
}
Fichier main.c:
int main(int argc, har *argv[]){
toto(5);
return(0);
}
Tu compiles comme ceci:
gcc -c lib.c
gcc -o lib.so -shared lib.o
gcc -o main main.c lib.so
Ton fichier lib.so contient la lib: tu peux l'utiliser dans plein d'autre programme, sans recompilation
Egalement, l'interet des lib est la diffusion de code compilé, propre à être utilisé dans des programmes divers, sans diffusion du code source
Par exemple, avec un truc comme la SDL (ou tout autre lib que tu utilises: X, sqlite, pthread, boost ..), tu utilises les fonctions de la lib (pthread_create) sans t'occupé du code source
Tout ca, c'est pour créer une lib
Ensuite, si tu veux la diffuser, tu peux utiliser le principe du package (création d'un paquet rpm/deb contenant les fichiers de la lib: .so & .h)
Tu peux aussi envoyer les fichiers so & h à ton client, directement
Aparté: une lib dynamique est un fichier unique, les programmes qui utilisent la lib appellent tous le même fichier
Par exemple: la libc.so.6 est utilisé par ls et par cat, cependant le code en lui même est placé dans un unique fichier: libc.so.6
Il n'y a donc pas redondance de code compilé
En revanche, une lib static est incorporé dans le programme: si plusieurs programmes utilisent la lib, il y aura plusieurs copie du code compilé
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
#5 Le 16/07/2012, à 19:41
- Daemos
Re : creation de bibliotheque
rebonjour
merci pour vos réponses mais ce je cherche à réaliser c est simplement mettre des lib.so dans un répertoire que certains utilisateurs pourront utiliser pour leurs applications
mon soucis est de savoir comment recuperer le maximum de lib car dans /usr/lib tous n y est pas dois je passer par apt-get ,aptitude ou synaptic pour recuperer ces lib.so
cela serait sympa de me donner quelques exemples sur la facon de procéder
merci d avance
Hors ligne
#6 Le 16/07/2012, à 19:49
- Haleth
Re : creation de bibliotheque
J'ai du mal à comprendre ce que tu veux faire, exactement
Mettre des fichiers dans un répertoire: tu as un accès à la machine -> cp ou mv
Mettre des fichiers dans un répertoire: tu n'as pas d' accès à la machine -> package + ppa (voir la doc)
Récuperer des lib: si elles sont sur ton système, alors c'est généralement qu'un paquet existe derrière -> utilise dpkg pour trouver le paquet, et aptitude pour recup le paquet via le cache
Bref, je peux pas vraiment t'aider, je saisit pas la finalité de l'opération
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
#7 Le 16/07/2012, à 20:04
- Daemos
Re : creation de bibliotheque
re
pour mon stage j ai un serveur avec une ubuntu je dois creer une bibliotheque contenant des lib.so exemple fortran etc puis la mettre dans un repertoire sur le serveur de facon a ce que les utilisateurs puisse recuperer et installer la librairie dont ils auront besoin
merci
Hors ligne
#8 Le 16/07/2012, à 20:07
- Haleth
Re : creation de bibliotheque
Ben, dans ce cas, tu peux faire un package (voir la doc)
Ubuntu is an ancien African word which means "I can't configure Debian"
Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.
Hors ligne
Pages : 1