OVH Cloud OVH Cloud

nom des bibliotheques partagees?

1 réponse
Avatar
Saïd
Bonjour,

Je suis nouveau en programmation sous Mac OS X aussi vous voudrez bien me
pardonner mon eventuelle naivete. J'ai quelques questions, au sujets des
librairies partagees:

1) d'abord est-ce possbile d'en creer sous mac OS X et se comporte-t-elles
comme sous linux? J'ai des programmes en C dont je veux faire une librairie
pour pouvoir les utiliser dans s'autres prgrammes en compilant avec
-llenomdemalibrairie.

2) quelle variable par defaut est utilisee pour trouver les librairies (sous
linux c'est LD_LIBRARY_PATH)?

3) qu'elle est l'extension par defaut (sous linux c'est .so)? J'ai vu des
fichiers .dylib (comme dans libX11.dylib), c'est bien ca?

4) Sous linux la commande suivant produit ce que je veux (LIBslSYSMW est le
nom de la destination), la meme commande marche-t-elle sous OS X avec les
memes effets?

ld -shared -soname libsysmw.so -o $(LIBslSYSMW) $(OBJ)

Merci beaucoup.

--
Saïd.

1 réponse

Avatar
Schmurtz
Bonjour,

Je suis nouveau en programmation sous Mac OS X aussi vous voudrez bien me
pardonner mon eventuelle naivete.


On commence tous un jour, Saïd. C'est normal, il y a toujours un moment
où il faut posser des questions assez naïve du point de vu des
connaisseurs. Je pense que tu l'a bien remarqué sur fr.comp.os.mac-os.x
en particulier.

1) d'abord est-ce possbile d'en creer sous mac OS X et se comporte-t-elles
comme sous linux? J'ai des programmes en C dont je veux faire une librairie
pour pouvoir les utiliser dans s'autres prgrammes en compilant avec
-llenomdemalibrairie.


Je ne vais pas te faire l'histoire de MacOS X. Mais tu dois savoir que
MacOS X est à base de Unix, donc pour avoir un minimum de compatibilité
avec les autres unix, il faut qu'il gère les bibliothèques partagées de
manière similaire. C'est le cas d'ailleurs.

Il y juste une chose qui change, le format des exécutables : Mach-O.
Mais ça n'a aucune importance, suaf que tu DOIS utiliser les commandes
fourni avec MacOS, et non les recompiler depuis d'autres sources.

2) quelle variable par defaut est utilisee pour trouver les librairies (sous
linux c'est LD_LIBRARY_PATH)?


C'est sûrement pareil, mais je ne peux pas confirmer.

3) qu'elle est l'extension par defaut (sous linux c'est .so)? J'ai vu des
fichiers .dylib (comme dans libX11.dylib), c'est bien ca?


C'est .dylib, mais on doit pouvoir charger soit même n'importe quel
fichier du moment qu'il soit au bon format.

Ça, c'est du côté unix de MacOS X, du côté Apple, il y a les frameworks
qui ne sont rien de plus que des bibliothèques.

Juste un conseil. Afin d'éviter tous les problèmes de dépendances, il
vaut mieux utiliser des bibliothèques statique qui seront intégrées à
l'exécutable. Tu ne manques pas de place à ce point sur ton disque ?
Réserve l'utilisation de bibliothèques partagées uniquement pour des
gros morceaux, réellement autonomes comme un parseur, un décodeur de
fichiers (comme libxml, libjpeg, pour lire/écrire dans un format
donnée), un protocol de connexion.

4) Sous linux la commande suivant produit ce que je veux (LIBslSYSMW est le
nom de la destination), la meme commande marche-t-elle sous OS X avec les
memes effets?

ld -shared -soname libsysmw.so -o $(LIBslSYSMW) $(OBJ)


Je ne sais pas, j'utilise toujours ProjectBuilder qui fait tout tout
seul.

--
Schmurtz