problème compilation (link)

problème compilation (link) - C - Programmation

Marsh Posté le 16-02-2007 à 09:51:35    

Bonjour !
 
J'ai un petit soucis de compilation au moment du link
 

Code :
  1. gcc -g -O2 -o .libs/spotd main.o [...] -lpcap -lpthread -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto


j'utilise automake ; j'ai abrégé la ligne de compile pour en venir au fait :
 

Code :
  1. /usr/bin/ld: cannot find -lmysqlclient
  2. collect2: ld returned 1 exit status


 
EDIT :
distrib : fedora core 4
 
j'utilise mysql_config qui est sur mon système, donc, la ligne qu'il génère doit forcément compilé non ?
 
voici le répertoire concerné :

Code :
  1. # ls -1 /usr/lib/mysql
  2. ibmysqlclient_r.so.10
  3. libmysqlclient_r.so.10.0.0
  4. libmysqlclient_r.so.15
  5. libmysqlclient_r.so.15.0.0
  6. libmysqlclient.so.10
  7. libmysqlclient.so.10.0.0
  8. libmysqlclient.so.15
  9. libmysqlclient.so.15.0.0
  10. mysqlbug
  11. mysql_config


 
alors, que faut-il faire ? les librairies sont pourtant la.

Message cité 1 fois
Message édité par nORKy le 16-02-2007 à 09:53:35
Reply

Marsh Posté le 16-02-2007 à 09:51:35   

Reply

Marsh Posté le 17-02-2007 à 19:24:13    

nORKy a écrit :

Bonjour !
 
J'ai un petit soucis de compilation au moment du link
 

Code :
  1. gcc -g -O2 -o .libs/spotd main.o [...] -lpcap -lpthread -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto


j'utilise automake ; j'ai abrégé la ligne de compile pour en venir au fait :
 

Code :
  1. /usr/bin/ld: cannot find -lmysqlclient
  2. collect2: ld returned 1 exit status


 
EDIT :
distrib : fedora core 4
 
j'utilise mysql_config qui est sur mon système, donc, la ligne qu'il génère doit forcément compilé non ?
 
voici le répertoire concerné :

Code :
  1. # ls -1 /usr/lib/mysql
  2. ibmysqlclient_r.so.10
  3. libmysqlclient_r.so.10.0.0
  4. libmysqlclient_r.so.15
  5. libmysqlclient_r.so.15.0.0
  6. libmysqlclient.so.10
  7. libmysqlclient.so.10.0.0
  8. libmysqlclient.so.15
  9. libmysqlclient.so.15.0.0
  10. mysqlbug
  11. mysql_config


 
alors, que faut-il faire ? les librairies sont pourtant la.


 
Apparemment, il te manque le fichier "/usr/lib/libmysqlclient.so" tout court. Tu as bien un paquet de "libmysqlclient.so.blablabla" mais l'option "-lxxx" de gcc demande un link sur "/usr/lib/libxxx.a" ou bien "/usr/lib/libxxx.so" tout court et non "/usr/lib/libxxx.so.plein_de_truc_après"
 
Essaye donc d'aller dans /usr/lib" et de créer un lien symbolique de "libmysqlclient.so.15" vers "libmysqlclient.so"


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 19-02-2007 à 21:46:06    

tu edites ton fichier /etc/ld.so.conf, tu rajoutes le path de tes libs de mysql, et tu tapes la commande ldconfig pour mettre à jour le chargeur de lien dynamique.
 
Tu peux egalement créer un un lien symbolique de chacune de tes bibliothèques en les mettant dans /usr/lib.

Reply

Marsh Posté le 20-02-2007 à 09:19:31    

Ou alors, plus simple : ajouter l'option -L /usr/lib/mysql dans les options de compilation. [:dawao]

 

edit : il faut que cette option apparaisse avant l'option -lmysqlclient


Message édité par Elmoricq le 20-02-2007 à 09:34:08
Reply

Marsh Posté le 20-02-2007 à 13:48:05    

Merci, en effet, j'ai rajouté un linen symbolique vers le bon so
 
@Elmoricq : regarde ma ligne de compil en haut, j'ai bien le -L avant le -l

Reply

Marsh Posté le 20-02-2007 à 13:59:14    

Ah oui, tiens. Dans ce cas, il suffit de faire un lien sur... .... ah, on me souffle à l'oreille que ça a déjà été proposé, et que cela a résolu le problème.
 
/retourne dormir.

Reply

Sujets relatifs:

Leave a Replay

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