Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2008, 16h25   #1
Rédactrice
 
Avatar de Fleur-Anne.Blain
 
Inscription : juillet 2006
Messages : 2 662
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 2 662
Points : 5 590
Points : 5 590
Par défaut bibliotheque .a ou .so

Bonjour,


J'ai un projet dont le but est de faire une bibliotheque de fonction manipulant n'importe quel ensemble mathématique. Bref en gros j'ai:

fichier.h
fichier.c qui contient l'implémentation de mes fonctions
main. c (plusieurs main en fait) permettant de tester ma bliotheque.

On me demande de réaliser un bibliothèque au sens linux du terme .a ou .so...

Or moi je ne sais pas comment faire avec la description des différents fichiers décrits ci-dessus. Comment créer un .a ou .so (sachant que je ne sais pas trop de que c'est même après recherche).

Merci d'avance
__________________
la culture c'est comme la confiture moins on en a plus on l'étale.

Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi

Mes tutos
Fleur-Anne.Blain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h45   #2
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 713
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 713
Points : 15 946
Points : 15 946
il semblerait que l'extension ne serve que d'indication.
comme on a les .dll sous Windows, on a les .so sous linux qui sont les librairies dynamiques (et donc qu'on peut charger à la volée). et pour les créer, plutot qu'un exe, il suffit de mettre le flag -c au compilateur.
(pour le a, il s'agit d'une librairie statique et là je sais pas trop ce que c'est la définition dit que la lib est chargé au moment du link, à l'inverse des shared qui sont utilisées par plusieurs programmes. pas très clair tout ca )

p-e ce lien pourrait-il t'aider:
http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

il parle de gcc donc ce sera p-e à adapter à ton compilateur
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h48   #3
Rédactrice
 
Avatar de Fleur-Anne.Blain
 
Inscription : juillet 2006
Messages : 2 662
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 2 662
Points : 5 590
Points : 5 590
merci je sais lire ce qu'il y a sur google...


et non le flag -c à la compilation n'a pas ce résultat. Je cherche justement quelle est la commande à saisir. Pour le moment j'ai mon .h mes .c puis mes .o pour mon exe.


Mais il me faut des .a ou .so


Je vais regarder le lien apparement il y a un exemple.merci

Citation:
Envoyé par Louis-Guillaume Morand Voir le message
il semblerait que l'extension ne serve que d'indication.
comme on a les .dll sous Windows, on a les .so sous linux qui sont les librairies dynamiques. et pour les créer, plutot qu'un exe, il suffit de mettre le flag -c au compilateur.

p-e ce lien pourra p-e t'aider:
http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

il parle de gcc donc ce sera p-e à adapter à ton compilateur
__________________
la culture c'est comme la confiture moins on en a plus on l'étale.

Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi

Mes tutos
Fleur-Anne.Blain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h49   #4
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 713
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 713
Points : 15 946
Points : 15 946
d'après le lien,
"-c" permet d'obtenir des .o
puis la commande "ar" permet de transformer le .o en .a

Citation:
ar rcs nom_final.a fichier.o
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 16h55   #5
Rédactrice
 
Avatar de Fleur-Anne.Blain
 
Inscription : juillet 2006
Messages : 2 662
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 2 662
Points : 5 590
Points : 5 590
La commande marche j'ai bien un .a ...mais si quelqu'un pouvait m'expliquer qu'elle en est l'utilité alors que j'ai mon .h mes .c et mes fichiers tests qui tournent..pourquoi on me demande un .a ou .so a quoi ca sert??
__________________
la culture c'est comme la confiture moins on en a plus on l'étale.

Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi

Mes tutos
Fleur-Anne.Blain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 17h05   #6
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 713
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 713
Points : 15 946
Points : 15 946
et c'est juste pour créer une librairie externe. Ensuite pour montrer quelle marche, il faut créer un programme avec juste une méthode main qui charge le fichier .so puis qui appelle les méthodes de .so


pour le .so
Code :
gcc -o GenExt2FS.so -shared GenExt2FS.o -lgcc
ou alors le paramètre "-fPIC" à la place -lgcc si ca plante
__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 17h16   #7
Membre expérimenté
 
Avatar de Pilru
 
Homme
Dev ASP.NET/jQuery ; Admin ORACLE
Inscription : septembre 2007
Messages : 418
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Dev ASP.NET/jQuery ; Admin ORACLE

Informations forums :
Inscription : septembre 2007
Messages : 418
Points : 531
Points : 531
.so = bibliothèque partagé (shares object).
.a = bibliothèque statiques

On te demande de faire une bibliothèque, qui servira pour d'autres programmes.
Pilru est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2008, 18h25   #8
Rédacteur
 
Avatar de Davidbrcz
 
Homme
1A Supaéro
Inscription : juin 2006
Messages : 2 089
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 20

Informations professionnelles :
Activité : 1A Supaéro

Informations forums :
Inscription : juin 2006
Messages : 2 089
Points : 2 799
Points : 2 799
Envoyer un message via MSN à Davidbrcz
Un exemple simple de blibliothèque statique :
http://www.cmi.univ-mrs.fr/~contensi...n=env&page=bib
__________________
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)

Mes articles dont Conseils divers sur le C++
Une très bonne doc sur la STL (en) Why linux is better (fr)
Davidbrcz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2008, 15h04   #9
Expert Confirmé
 
Avatar de Katyucha
 
Inscription : mars 2004
Messages : 3 109
Détails du profil
Informations personnelles :
Âge : 31
Localisation : Allemagne

Informations forums :
Inscription : mars 2004
Messages : 3 109
Points : 3 313
Points : 3 313
tu as souvent deux facons de déployer une application.

Soit en utilisant les librairies dynamiques : Tout programme peut se lier dessus. L'appli se lie aux librairies existantes et rajoutent les siennes.

Soit en utilisant une librairie statique : dans ce cas, l'appli est souvent déployé dans un répertoire unique avec librairie, programme...etc
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP
The UNIX way of sex:
gunzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

Je ne réponds ni aux messages privées, ni aux messages plein de fautes...
Katyucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2008, 21h17   #10
Rédactrice
 
Avatar de Fleur-Anne.Blain
 
Inscription : juillet 2006
Messages : 2 662
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 2 662
Points : 5 590
Points : 5 590
Merci à tous ceux qui m'ont répondu et éclairé je vais avancer avec ce que vous m'avez précisé
__________________
la culture c'est comme la confiture moins on en a plus on l'étale.

Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi

Mes tutos
Fleur-Anne.Blain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2008, 22h00   #11
Membre éprouvé
 
Avatar de toomsounet
 
Inscription : janvier 2005
Messages : 481
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : janvier 2005
Messages : 481
Points : 495
Points : 495
Si jamais tu dois utiliser une lib dynamique, tu pourrais regarder du côté de la librairie dl http://tldp.org/HOWTO/Program-Librar...libraries.html

Ca permet de pouvoir invoquer des fonctions qui se trouvent dans un .so
__________________
"Most Java programs are so rife with concurrency bugs that they work only by accident"
toomsounet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h06.


 
 
 
 
Partenaires

Hébergement Web