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 :
- #include <stdio.h>
- #include <stdlib.h>
- #include <time.h>
- #include "libpq-fe.h"
- #include <neko.h>
|
Ces fichiers se trouvent dans les répertoires suivants (sur mon Mac avec Xcode)
Code :
- /usr/include/stdio.h
- /usr/include/stdlib.h
- /usr/include/time.h
- /Library/PostgreSQL/8.3/include/libpq-fe.h
- /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 :
- /usr/lib/neko/libneko.dylib
|
EDIT: et peut-être celui-là aussi:
Code :
- /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 :
- 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
Message édité par igarimasho le 28-04-2009 à 12:13:07