je travaille sur une librairie de fonctions qui utilise elle meme une autre librairie:libpq.a (utilisation d'une DB postgres depuis un programme en C)
J'ai de gros problèmes lorsque je dois compiler ma librairie, et ensuite compiler un programme qui utilise cette librairie.
J'ai reussi à faire un makefile qui arrive à faire compiler ma lib(ftmlib.a), mais je n'arrive pas à inclure cette lib dans un programme.
en gros:
ftmlib.a depend de libpq.a
mon_programme.c depend de ftmlib.a et libpq.a
comment puis je faire comprendre à gcc que je veux compiler mon_programme.c en utilisant ftmlib.a et libpq.a?
PpHd Le 08/11/2004 à 16:03 gcc mon_programme.c ftmlib.a libpq.a ?
gcc testnico3.c -o testnico3 /usr/lib/libpq.a /home/nicolas_ab/smartcvs/ftmaster/54/outils/ftmlib.a
/usr/lib/libpq.a(fe-misc.o)(.text+0x109f): In function `pqSocketCheck':
: undefined reference to `SSL_pending'
/usr/lib/libpq.a(fe-secure.o)(.text+0x6a): In function `pqsecure_open_client':
: undefined reference to `SSL_new'
/usr/lib/libpq.a(fe-secure.o)(.text+0x86): In function `pqsecure_open_client':
: undefined reference to `SSL_set_ex_data'
/usr/lib/libpq.a(fe-secure.o)(.text+0xe1): In function `pqsecure_open_client':
: undefined reference to `SSL_set_fd'
.... (y en a encore plein)
le compilateur se comporte comme si il y avait des erreurs de liens dans la lib libpq.a (ce dont je doute tres fortement,postgres est quand meme un projet qui fonctionne)
je pete un boullard, ce truc est en train de me rendre dingue.
Je pense que la compilation de ma librairie (ftmlib.a) est foireuse, et qu'elle me fait echouer autre chose plus loin.
je vais tout reprendre de zero, au calme, et sans tout ces makefile autogénéré qui me mettent un paté pas croyable.au moins, avec gcc en ligne de commande, on sait ce qu'on fait. #pataper#
PpHd Le 08/11/2004 à 16:20 J'ai dit :
gcc mon_programme.c ftmlib.a libpq.a
et pas
gcc mon_programme.c libpq.a ftmlib.a
Bref:
gcc testnico3.c -o testnico3 /home/nicolas_ab/smartcvs/ftmaster/54/outils/ftmlib.a /usr/lib/libpq.a
pkoi pas -lpq plutôt que /usr/lib/libpq.a ?
Et sinon, y a moyen de gérer des .a avec des références croisées ? switch, .a en double, ... ?
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
PpHd Le 08/11/2004 à 16:59 > Le "mais" est en trop j'imagine ?
Oue surement. Mon GC a deja vire les informations necessaires a ta reponse.
PpHd Le 08/11/2004 à 17:35 Tu n'inclus aucune librarie.
Tu dois inclure les libraries dans l'ordre pour que le linkeur statique les trouve.
c'est un peu flou là.
par librairie, tu parle des fichier.h ou de fichier.a?
Comment je les inclues?
PpHd Le 08/11/2004 à 18:19 Les .a. Tu m'embrouilles c'est pourtant simple : dans la ligne de commande, tu mets libsql.a AVANT libpq.a .
merci!!
Justement, hier soir, j'ai commencer à regarder du coté des "-Wl,"....