Programme C et base de donnée mysql sous linux

Résolu
Bonjour,
je suis un débutant dans le langage C j aimerai une aide sur un probleme de compilation avec gcc sous linux lorsque je veux générer mon exécutable avec la libraire de mysql il me dit qu'il ne retrouve pas le fichier.
voici le code erreur :
/usr/bin/ld: cannot find -l/home/safeoraci//mysqlconnect/lib/libmysqlclient.a
collect2: ld returned 1 exit status

Merci de bien m'aider à poursuivre ma programmation

4 réponses

Résumé de la discussion

Le problème décrit est un échec de linkage lors d'une compilation en C sous Linux avec la bibliothèque MySQL, affichant une erreur cannot find -l/home/safeoraci//mysqlconnect/lib/libmysqlclient.a et des références non résolues. Selon la meilleure réponse, l'ordre de linkage est crucial et le fichier bibliothèque doit être placé après les fichiers objets, donc la commande correcte peut ressembler à gcc -o main main.c /home/safeoraci/mysqlconnect/lib/libmysqlclient.a. Des conseils complémentaires rappellent que l'intégralité des ressources de développement peut être nécessaire sur certaines distributions, comme l'installation de libmysqlclient-dev ou l'utilisation d'un chemin de bibliothèque adapté à l'architecture. En cas d'erreurs supplémentaires liées à des symboles C++ non résolus, certains recommandent d'ajouter -lstdc++ avant le nom du fichier exécutable pour satisfaire les liaisons de dépendances.

Bobot (l’IA à votre service)
  1. Contributeur
    Bonjour,

    /home/safeoraci//mysqlconnect/lib/libmysqlclient.a
    Ben, il y a // entre safeoraci et mysqlconnect. Voilà pourquoi il ne doit pas trouver. Il faut changer le chemin.
    0
    1. slt,merci pour ta reponse mais tjrs la mm chose
      voici l erreur:
      /usr/bin/ld: cannot find -l/home/safeoraci/mysqlconnect/lib/libmysqlclient.a
      collect2: ld returned 1 exit status
      0
      1. Contributeur
        As-tu vérifié que le fichier libmysqlclient.a était bien présent à cet emplacement ?
        0
    2. oui bien vérifié mais tjrs le mm probleme
      0
      1. Contributeur
        'lut, que dit la commande
        file /home/safeoraci/mysqlconnect/lib/libmysqlclient.a
        ?
        0
      2. Bonjour gravgun voici le resultat de la commande
        /home/safeoraci/mysqlconnect/lib/libmysqlclient.a: current ar archive
        0
    3. Contributeur
      'lut, avec
      gcc
      , pour compiler avec une librairie statique, on utilise pas
      -l
      , on met juste le nom de fichier de l'archive. Ta ligne devient donc comme ceci:
      gcc -o programme /home/safeoraci/mysqlconnect/lib/libmysqlclient.a  programme.c

      0
      1. slt,apres l execution de la commande il me renvoi cette erreur

        -sh-4.1$ gcc -o main /home/safeoraci/mysqlconnect/lib/libmysqlclient.a main.c
        /tmp/cc7g6ec6.o: In function 'main':
        main.c:(.text+0x23): undefined reference to 'mysql_init'
        main.c:(.text+0x3c): undefined reference to 'mysql_options'
        main.c:(.text+0x77): undefined reference to 'mysql_real_connect'
        main.c:(.text+0x95): undefined reference to 'mysql_close'
        collect2: ld returned 1 exit status
        0
      2. Contributeur
        Arf, je sais que l'odre dans lequel on précise les fichiers influe sur le linker... Tente en inversant l'odre du .a et du .c.
        0
      3. je crois qu'il ne voit pas la librarie
        0
      4. j'ai inversé mais tjrs le mm probleme
        0
      5. Contributeur
        La commande du coup c'était bien ça: ?
        gcc -o main main.c /home/safeoraci/mysqlconnect/lib/libmysqlclient.a

        J'avais oublié que l'odre de link se faisait de gauche à droite
        0