Bonjour j'ai un petit problème de compilation.
Je veux compiler sous linux un fichier .cpp pour en avoir en fin un fichier .so
Pouvez vous m'aider en me spécifiant la démarche à suivre.
Bonjour j'ai un petit problème de compilation.
Je veux compiler sous linux un fichier .cpp pour en avoir en fin un fichier .so
Pouvez vous m'aider en me spécifiant la démarche à suivre.
La faq répond à ton problème.
En l'occurence, essaie g++ fichier.cpp -o nom_du_programme -Wall -Wextra -WerrorJe te recommande vivement de lire la faq d'un bout à l'autre.
Mhhh... si je peux me permettre pourquoi (?) veux-tu générer un .so
Généralement le .so se génère lorsqu'on developpe une bibliotheque.
Salut,Oui, et alors
Les EDI, quels qu'ils soient, sont effectivement quelque chose de génial pour la gestion de projets.car par exemple sur Qt Creator, pas besoin de savoir comment faire... on a juste a sélectionné "bibliothèque C++" lorsqu'on veut débuter le projet, et quand on veut compiler celui-ci, si il n'y a pas d'erreur, il génère le .so
Sans balgue: on n'a plus rien à faire: on rajoute comme on veut des fichiers, des dépendances, bref, tout ce qu'on veut et, en plus, ils fournissent l'auto complétion
Mais bon, le but des bibliothèques, qu'elles soient statique (libxxx.a) sous dynamique (.so / .dll), est, classiquement, de permettre de les intégrer facilement à différents projets.
Si l'on crée une dépendance envers un EDI particulier pour la compilation, on limite de facto le cadre dans lequel la bibliothèque peut être générée, et donc, utilisée.
Si on peut envisager de fournir "le nécessaire" pour pouvoir gérer le projet dans un EDI ou un autre, il est quand même largement préférable de faire en sorte que la compilation de la bibliothèque (ou de n'importe quel projet, d'ailleurs) puisse s'effectuer à l'aide d'un système d'automatisation de la compilation (autotools, CMake, Makefiles, ...), surtout si l'on veut fournir la bibliothèque sous la forme opensource![]()
Pour générer une bibliothèque dynamique à partir d'un fichier c++, c'est le même principe que pour un fichier c :
compilation : g++ -c -fPIC mon_fichier.cpp
liaison : g++ mon_fichier.o -o maLib.so -shared
Presque. -fPIC ne fait que dire qu'on va générer un fichier relocable. If faut aussi prévenir le code qu'on compile de ce fait, en définissant la macro PIC.
D'un point de vue purement théorique, ça ne devrait pas être nécessaire - l'utilisation de -fPIC force la définition des macros __pic__ et __PIC__, ce qui devrait être suffisant. Mais il existe encore beaucoup de code qui se basent dur la macro PIC - il faut donc la définir aussi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 g++ -fPIC -DPIC -c mon_fichier.cpp -o mon_fichier.o
Ah bon ? Jamais vu un code qui nécessitait -DPIC !
C'est ce qu'on appelle de la chance
gmp 4.3.2, fichier tune/speed.h, ligne 316.
Pour info, gmp est l'une des composantes majeure de gcc. C'est la librairie bignum de GNU.
On trouve aussi plusieurs #if defined PIC dans e2fsprogs 1.40.11 (dans intl/relocatable.c).
En cherchant bien, je devrais pouvoir en trouver d'autres![]()
Tu peux aussi faire ça avec CMake, il y a un tutoriel sur le site : http://florian-goujeon.developpez.co...initiation/#LV
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager