Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1050 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Compiler une bibliothèque

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Compiler une bibliothèque

n°1878569
igarimasho
Posté le 28-04-2009 à 10:05:13  profilanswer
 

Bonjour, j'ai besoin de compiler du code pour les plateformes OsX et GNU/Linux, le développeur ne fournissant d'origine qu'un fichier compilé pour Windows...
 
J'annonce tout de suite, le C c'est un truc qui m'a toujours impressionné mais je ne me suis jamais lancé dedans, donc c'est un truc complètement nouveau pour moi.
 
Le fichier source s'appelle postgres.c, et la bibliothèque finale doit s'appeller nPostgres.ndll.
 
EDIT: si ça peut aider il y a un fichier .vcproj fournit par le développeur avec des options de compilation. Il faudrait arriver à le transcrire en fichier Makefile?
 
Il a les dépendences suivantes:

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include "libpq-fe.h"
  5. #include <neko.h>


 
Ces fichiers se trouvent dans les répertoires suivants (sur mon Mac avec Xcode)

Code :
  1. /usr/include/stdio.h
  2. /usr/include/stdlib.h
  3. /usr/include/time.h
  4. /Library/PostgreSQL/8.3/include/libpq-fe.h
  5. /usr/lib/neko/include/neko.h


 
EDIT: il y a aussi un fichier /Library/PostgreSQL/8.3/include/postgres_ext.h qui est nécessaire à la compilation et est includé par libpq-fe.h: #include "postgres_ext.h"
 
EDIT: après moultes recherches j'ai découvert que je dois également inclure les fichiers:

Code :
  1. /usr/lib/neko/libneko.dylib


 
EDIT: et peut-être celui-là aussi:

Code :
  1. /Library/PostgreSQL/8.3/lib/libpq.dylib


Du moins dans le fichier .vcproj, il mentionne libpq.lib, mais ça c'est sous Windows.
 
J'imagine que les fichiers /usr/include/* sont automatiquement découverts par gcc, mais pas les autres, donc j'ai tenté une première fois de copier tous ces fichiers dans le même répertoire que le fichier source et j'ai lancé la commande:

Code :
  1. gcc -c postgres.c -o nPostgres.ndll


Il ne trouvait pas neko.h, alors j'ai édité la ligne en: #include "neko.h", et ça passait à la suite, et je me prends les warning suivants:

Citation :

postgres.c: In function ‘np_free_result’:
postgres.c:139: warning: assignment from incompatible pointer type
postgres.c: In function ‘np_connect’:
postgres.c:167: warning: passing argument 2 of ‘neko_val_gc’ from incompatible pointer type
...


 
Le fichier compilé nPostgres.ndll ne pèse que 15Kb, alors que le fichier windows pèse 200Kb, donc j'imagine qu'il doit manquer des bouts de code dans ma bibliothèque compilée, et je l'ai testée, elle ne marche pas.
 
Donc si quelqu'un touche un peu ce genre de chose et aurait 3 minutes pour m'aider il aurait mon infinie gratitude :jap:


Message édité par igarimasho le 28-04-2009 à 12:13:07
mood
Publicité
Posté le 28-04-2009 à 10:05:13  profilanswer
 

n°1878635
kao98
...
Posté le 28-04-2009 à 11:09:55  profilanswer
 

Le fournisseur de la lib ne fourni aucune doc quant à la compilation de la lib pour d'autre plateforme que celle prise en charge initialement ?
 
Tu aurais meilleur temps de les contacter eux, tu auras des réponses plus rapidement, et sans doute moins approximative.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1878643
Elmoricq
Modérateur
Posté le 28-04-2009 à 11:22:25  profilanswer
 

gcc -c postgres.c -o nPostgres.ndll

 

> Enlève le -c, ajoute les dépendances nécessaires avec -l<dépendance> (cf. documentation de la bibliothèque), les répertoires utilisées avec -L<répertoire> éventuellement, et l'option -shared pour dire à gcc que tu souhaites compiler une bibliothèque dynamique.
Ou bien lis la documentation du fournisseur de la bibliothèque, comme le propose kao98, c'est peut-être ce qu'il y a de mieux à faire en effet.

 

Note : la traduction française de library, c'est bibliothèque. C'est bookshop qui donne librairie en français. :o


Message édité par Elmoricq le 28-04-2009 à 11:23:17
n°1878655
igarimasho
Posté le 28-04-2009 à 11:53:07  profilanswer
 

kao98 a écrit :

Le fournisseur de la lib ne fourni aucune doc quant à la compilation de la lib pour d'autre plateforme que celle prise en charge initialement ?
 
Tu aurais meilleur temps de les contacter eux, tu auras des réponses plus rapidement, et sans doute moins approximative.


 
Y'a zéro doc à part le vcproj qui donne une piste. J'ai contacté le développeur et il m'a dit que concernant le C, il ne sait utiliser que Visual studio. Heureusement il a aussi un Mac et va tenter de compiler sa bibliothèque dessus.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Compiler une bibliothèque

 

Sujets relatifs
[Résolu]Compiler pour obtenir un .obj (C/Delphi)Chiffrement. Quel bibliothèque (pour C#) ou comment utiliser gpg?
version différente entre bibliothèque et serveur ?probleme des bibliotheque c
Microsoft compiler C/C++ 7.0Comment compiler?
Compiler sous emacs ubuntucomment activer bibliotheque
[noob]Comment compiler une bibliotheque avec g++ ?Options GCC pour compiler bibliothèque C++
Plus de sujets relatifs à : Compiler une bibliothèque


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR