IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

cannot find -ltiff


Sujet :

C++

  1. #1
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2014
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2014
    Messages : 71
    Par d�faut cannot find -ltiff
    Bonjour,
    Dans le cadre d'un stage en entreprise de traitement d'images, on me demande � ce stade de mon travail de convertir des images binaires en TIFF, et ce par le biais d'un fichier de code d�j� fourni mais qu'il faut compiler. Seulement, � la compilation, j'obtiens l'erreur suivante que je ne comprends absolument pas, et malgr� quelques recherches sur internet, �a reste assez flou, si quelqu'un peut m'�clairer !

    J'obtiens :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    modis@modis:~/Desktop/b2tf$ make
    gcc -O2  -Wall  b2tf_strip.o GeographicTypes.o jpeg_strip.o pal_strip.o -lm -ltiff -lgeotiff -L/usr/lib -I/home/userglov/include  -o b2tf_strip
    /usr/bin/ld: cannot find -ltiff
    collect2: ld returned 1 exit status
    Merci d'avance !

  2. #2
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Bonjour,
    -lbidule est l'option du compilateur gcc ou g++ pour lui dire "utilise la biblioth�que libbidule".
    Il faut qu'elle soit install�e dans une zone connue de ld (le linker)

    Comme je vois que tu as utilis� make, il faut v�rifier ton makefile.

  3. #3
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2014
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2014
    Messages : 71
    Par d�faut
    Merci pour ta r�ponse !

    Je viens de jeter un coup d'oeil au Makefile et je vois �a :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    LIBS=   -lm -ltiff -lgeotiff -L/usr/lib -I/home/userglov/include
    �videmment, je dois les modifier car cela ne correspond pas � la disposition de mes dossiers et localisations des librairies, mais peux-tu m'�clairer sur la diff�rence entre le -L et le -I � quoi il servent?

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Hello

    V�rifier le Makefile oui, mais d'abord v�rifier que la lib en question est install�e sur ta machine de travail. Tu as post� plus vite, je suppose du coup que tu as bien la lib quelque part.

    -L sert � indiquer ou chercher les binaires compil�s des biblioth�ques
    -I sert � indiquer ou trouver les headers (pour pouvoir les utiliser avec #include)

  5. #5
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    �ventuellement, il faudrait rajouter -L/usr/local/lib, si libtiff a �t� install�e manuellement.

    -I indique au compilateur un dossier dans lequel chercher les chemins demand�s via #include "".

    Je pense que c'est un bon moment pour t'int�resser � la chaine de compilation GCC (GNU Compiler Collection).
    Ainsi qu'au processus de compilation d'un programme C++

  6. #6
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2014
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2014
    Messages : 71
    Par d�faut
    Merci pour vos r�ponses,

    J'ai modifi� la ligne dans le Makefile pour la faire correspondre aux dossiers de librairie et d'includes
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     LIBS=   -lm -ltiff -lgeotiff -L/modis/OSS-MODIS/chaine_oss/warpgrid/lib -I/modis/OSS-MODIS/chaine_oss/warpgrid/include
    sachant que dans /lib j'ai un fichier libtiff.so
    Mais en vain, j'ai toujours la m�me erreur qui s'affiche ...

  7. #7
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    Sachant que -L et -I acceptent des chemins relatifs.

    Je pense d'ailleurs que ls /modis/OSS-MODIS/chaine_oss/warpgrid/lib �chouera.
    En effet, ton chemin est relatif.

    Essaie

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     LIBS=   -lm -ltiff -lgeotiff -Lmodis/OSS-MODIS/chaine_oss/warpgrid/lib -Imodis/OSS-MODIS/chaine_oss/warpgrid/include

  8. #8
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2014
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2014
    Messages : 71
    Par d�faut
    Toujours le m�me probl�me � l'�cran ...

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    modis@modis:~/Desktop/b2tf$ make
    gcc -O2  -Wall  b2tf_strip.o GeographicTypes.o jpeg_strip.o pal_strip.o -lm -ltiff -lgeotiff -Lmodis/OSS-MODIS/chaine_oss/warpgrid/lib -Imodis/OSS-MODIS/chaine_oss/warpgrid/include -o b2tf_strip
    /usr/bin/ld: cannot find -ltiff
    collect2: ld returned 1 exit status
    make: *** [b2tf_strip] Erreur 1

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    734
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 734
    Par d�faut
    le r�pertoire modis ne correspond-il pas � /home/modis ? (petite hypoth�se au vu du prompt modis@modis).
    Dans ce cas, tu devrais peut-�tre essayer le chemin ~/OSS-MODIS/chaine_oss/warpgrid/libSinon, positionne toi dans ton r�pertoire lib et utilises pwd pour avoir le chemin absolu

  10. #10
    Membre confirm�
    Homme Profil pro
    �tudiant
    Inscrit en
    Ao�t 2014
    Messages
    71
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : High Tech - Mat�riel informatique

    Informations forums :
    Inscription : Ao�t 2014
    Messages : 71
    Par d�faut
    Citation Envoy� par therwald Voir le message
    le r�pertoire modis ne correspond-il pas � /home/modis ? (petite hypoth�se au vu du prompt modis@modis).
    Dans ce cas, tu devrais peut-�tre essayer le chemin ~/OSS-MODIS/chaine_oss/warpgrid/libSinon, positionne toi dans ton r�pertoire lib et utilises pwd pour avoir le chemin absolu
    Ca marche en mettant /home/modis/ !!
    Merci beaucoup !

  11. #11
    Membre Expert
    Homme Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    734
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 734
    Par d�faut
    De nada.
    Maintenant l'inconv�nient de cette solution est qu'elle est un tantinet fragile (en gros le makefile ne marche que pour toi, le prochain devra rectifier aussi...)
    Je ne sais pas de quel temps et de quelle latitude tu disposes pour essayer de faire plus robuste dans ton stage, mais disons que dans le cas g�n�ral, si tu devais mettre en place un projet je conseillerais soit d'utiliser des localisations plus standard (/usr/lib et /usr/local/lib) soit pour des versions de biblioth�ques plus "exotiques" des lib situ�es dans la m�me arborescence que le source, avec, comme le soulignait leternel, des chemins relatifs (� l'emplacement du makefile) dans ton makefile.

  12. #12
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    normalement, le makefile est � la racine du projet, et ne contient que des chemins relatifs au projet lui m�me.

    une architecture assez courante de projet avec lib manuelle serait:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    projet
    |-> libalpha
    |   |-> includes/
    |   |-> src/
    |   |-> makefile
    |-> libbeta
    |   |-> includes/
    |   |-> src/
    |   |-> makefile
    |-> includes/
    |-> src/
    |-> makefile
    Une variante regroupe tous les includes
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    projet
    |-> libalpha
    |-> libbeta
    |-> includes/
    |   |-> alpha
    |   |-> beta
    |-> src/
    |-> libs/
    |-> makefile

    Dans la deuxi�me variantes, supposant qu'on compile les biblioth�ques dans libs:
    Code makefile : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    libs/libalpha.so:
        g++ libalpha/*.cpp -Iincludes/alpha -o libs/libalpha.so
     
    libs/libbetaa.so:
        g++ libbeta/*.cpp -Iincludes/beta -o libs/libbeta.so
     
    application: libalpha.so libbetaa.so
        g++ src/*.cpp -Iincludes -Llibs -o projets
    (j'ai omis les autres flags de compilations, c'est juste une maquette)

    Par ailleurs, si maintenir le makefile est trop gal�re, tu peux te tourner vers des rempla�ant, tels que scons ou waf
    Personnellement, j'utilise souvent scons, car il n'y a � peu pr�s rien � �crire pour du C++

Discussions similaires

  1. [STRUTS] [Debutant] Cannot find message resources...
    Par grizzz dans le forum Struts 1
    R�ponses: 14
    Dernier message: 05/05/2011, 16h08
  2. /usr/bin/ld: cannot find -lX11
    Par Micha�l dans le forum Administration syst�me
    R�ponses: 6
    Dernier message: 10/03/2008, 16h13
  3. [JSF] mon premier JSF:Cannot find FacesContext
    Par anitshka dans le forum JSF
    R�ponses: 15
    Dernier message: 24/08/2007, 18h19
  4. Message d'erreur: Cannot find file ID 2
    Par glanumf dans le forum MS SQL Server
    R�ponses: 1
    Dernier message: 25/05/2007, 16h08
  5. [Tomcat 4.1][Struts] Cannot find global ActionForward....
    Par otminou dans le forum Tomcat et TomEE
    R�ponses: 4
    Dernier message: 13/09/2004, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo