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 29/05/2010, à 10:31

superZozo

[Résolu] compilation statique

Bonjour,

une question qui me fait un peut honte... tongue
Je fais de la programmation en C avec code::blocks comme IDE, et je ne sais pas comment forcer le linker à utiliser les bibliothèques statiques quand il a le choix (.a .so).

Et en ligne de commande (gcc), ça donne quoi ???

-et si par hasard vous saviez avec mingw, ce serait royal ! big_smile

Merci

Dernière modification par superZozo (Le 30/05/2010, à 11:14)

Hors ligne

#2 Le 29/05/2010, à 13:57

omc

Re : [Résolu] compilation statique

Bonjour,
Une solution bourrine est de mettre le chemin complet de ta bibliothèque.
Pour des bibliothèques avec install standard cela devrait ressembler à ça:
-lTaLib -devient---> /usr/lib/TaLib/libTabLib.a

En ligne de commande, c'est tout pareil:

gcc main.c  -o main -lTaLib
   -devient-
gcc main.c  -o main /usr/lib/TaLib/libTabLib.a

J'espère que cela t'aide un peu...

Pour minGw c'est tout pareil !

Edit: Le linker est le programme ld, donc pour le manuel "man ld", mais c'est un sacré gros machin !!

Dernière modification par omc (Le 29/05/2010, à 14:02)

Hors ligne

#3 Le 29/05/2010, à 14:04

credenhill

Re : [Résolu] compilation statique

hello

gcc -o code -static code.c

Hors ligne

#4 Le 29/05/2010, à 19:08

superZozo

Re : [Résolu] compilation statique

oui, j'ai un peu calé sur les manuels...
Merci pour les réponses je vais essayer ça.
Une autre petite question : est-ce-que cela a une influence par exemple sur les flags ?

ex: `pkg-config  --cflags gtk +-2.0 --libs gtk+-2.0`pour la bibliotheque gtk

je suis un peu nul en compilation et j'ai pas trop compris l'intérêt de ces options...

Hors ligne

#5 Le 29/05/2010, à 22:32

Link31

Re : [Résolu] compilation statique

Le "pkg-config  --cflags" est obligatoire et très important, parce qu'il permet de réutiliser les directives de préprocesseur spécifiques à chaque paquet, qui sont celles avec lesquelles les bibliothèques ont été compilées. Ces directives doivent être identiques lorsque tu compiles ton propre programme, parce qu'elles influencent le contenu des fichiers headers qui sont compilés avec ton programme. Si ces options de compilation sont différentes, ton programme peut très bien se compiler correctement, mais planter mystérieusement à l'exécution (je me fais régulièrement avoir à cause de ça hmm).

De nombreux paquets n'ont pas de directives de compilation particulières en dehors des "includes", mais il ne faut pas se baser là-dessus. Et les options peuvent très bien changer entre deux versions d'une même bibliothèque.

Dernière modification par Link31 (Le 29/05/2010, à 22:34)

Hors ligne

#6 Le 30/05/2010, à 11:13

superZozo

Re : [Résolu] compilation statique

OK! merci a tous pour vos précieuses infos. smile

Je vais mettre résolu. J'y vois plus clair maintenant.

Hors ligne