Compiler une bibliothèque

Compiler une bibliothèque - C - Programmation

Marsh Posté le 28-04-2009 à 10:05:13    

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
Reply

Marsh Posté le 28-04-2009 à 10:05:13   

Reply

Marsh Posté le 28-04-2009 à 11:09:55    

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
Reply

Marsh Posté le 28-04-2009 à 11:22:25    

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
Reply

Marsh Posté le 28-04-2009 à 11:53:07    

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed