Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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