• [^] # Re: i majuscule

    Posté par (site web personnel) . En réponse au message openBSD | g++ | efl. Évalué à 7.

    Excusez l'éventuelle inadaptation de ma réponse. J'ai l'impression que vous avez encore un niveau grand débutant en programmation. Me tromperai-je ?
    D'après les quelques éléments de notre discussion il me semble que vous ne distinguez pas les choses suivantes : compilation et édition de lien d'une part et d'autre part fichiers d'en-tête et librairie. Plusieurs de vos déclarations me le laissent penser et donc ne voyez surtout pas d'insulte à ce que j'essaie de vous aider en vous tentant de vous permettre de mieux cerner ces notions. J'espère que cela vous sera utile.

    La transformation d'un code source en exécutable se déroule essentiellement en deux étapes : la compilation et l'édition de liens. La première commence par la vérification que votre programme est syntaxiquement correct (pas de points virgules manquant, d'appel de fonctions avec de mauvais arguments, ...). Pour cela le compilateur a besoin des définitions de toutes les fonctions et structures utilisées. Soit vous les avez écrites vous-mêmes (c'est la partie qu'on appelle « mon code ») soit vous les réutilisez depuis des fichiers d'en-tête (utilisant souvent la terminaison en .h). Pour indiquer au compilateur où trouver les fichiers en .h on utilise généralement l'option -I. Si votre programme est écrit correctement et que toutes les structures et fonctions sont correctement décrits alros le compilateur peut déjà finir la compilation et produire un « fichier objet » (souvent un fichier en .o) si vous utilisez l'option -c.

    En générale un fichier objet ne vous sera pas très utile (pour le moment) ce que vous voulez c'est une executable. Pour le réaliser, le compilateur invoque (discrétement) l'éditeur de liens (le programme qui vous a produit votre seconde série de messages d'erreurs une fois que vous avez corrigé votre option pour les includes). L'éditeur de liens va tenter de trouver le programme compilé de chacune des fonctions et méthodes employée dans votre programme pour produire un fichier exécutable. Ces choses se trouvent généralement dans :
    - des fichiers .o quand elles viennent de votre propre programme ;
    - des fichiers en .so ou .a appelés librairies (qu'il ne faut surtout pas confondre avec les fichiers d'en-tête) qui leurs sont associés. (Les librairies sont essentiellement des morceaux de code compilés avec l'option -c.)
    On indique que l'on souhaite utiliser une librairie avec l'option -lnom. Cela dit au compilateur que l'on souhaite utiliser la librairie appelée libnom.so ou libnom.a située dans un répertoire où se trouve normalement les librairies. L'option -L indique de chercher éventuellement des librairies dans le répertoire qui la suit.

    J'espère que tout ceci éclaire votre lanterne. Pour en revenir à votre dernière série d'erreurs, l'éditeur de lien se plaint qu'il lui manque un certain nombre de fonctions. Dans les fichiers Evas.h et Ecore_evas.h ne se trouvent probablement que les déclarations de ces fonctions. C'est suffisant pour le compilateur qui vérifie votre programme. Mais pour l'éditeur de liens, il faut aussi « le code » de la fonction. Celui-ci se trouve probablement dans l'une des librairies installées dans /usr/local/lib. C'est pour savoir dans laquelle de ces librairies que je vous ai indiqué de rechercher (avec la commande grep) les noms des fonctions manquantes dans les librairies de ce répertoire. Une fois que vous aurez trouvé la bonne librairie il devrait vous suffir d'ajouter une option avec -l... dans votre ligne de commande pour finalement obtenir votre executable.

    NB: veuillez m'excuser, c'est un peu long, il est tard et j'ai la flemme de me relire. J'espère que vous arriverez à retrouver vos petits avec ces quelques infos.

    « IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace