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 :

question bête: compilation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut question bête: compilation
    Bonjour à tous.
    Voila, j'ai une question super stupide qui va surement vous faire bien rire...
    En fait j'essaye de compiler un prog qui utilise la librairie libjpeg.
    Plutot que d'installer celle ci avec apt ou autre(dans ce cas je n'ai pas de prob), j'ai préféré utilisé les sources. Autrement dit je télécharge le tgz contenant cette librairie et je veux l'utiliser.
    Le repertoire absolu de celle ci est:
    /home/rageice/work/perso/libs/jpeg-6b/
    Le fichier que je dois insérer dans mon prog est:
    jpeglib.h

    Donc,
    dans mon fichier source il y a: #include <jpeglib.h>
    lors de la compilation, j'écris:
    gcc -I/home/rageice/work/perso/libs/jpeg-6b/ -c file.c
    gcc -I/home/rageice/work/perso/libs/jpeg-6b/ -ljpeglib -o bin file.o

    Là on me répond trés poliment:
    /usr/bin/ld: ne peut trouver -ljpeglib


    Bref, je suis sur que c'est ridicule comme problème mais je trouve pas la réponse donc si quelqu'un peut m'expliquer ce que je dois faire pour utiliser ce jpeglib.h dans mon prog, je lui en serai reconnaissant.

    (d'autre part, mais c'est moins important, il ya aussi un libjpeg.a qu'ils disent d'utiliser dans la doc pour simplifier les choses, mais comme je connais rien au linkage et à la compil, si quelqu'un veut bien m'en dire plus sur l'utilisation de ce type de fichier je serais super mega extra joyeux de la life).

    Merci d'avoir lu jusqu'ici, c'est long mais je voulais être explicite.

  2. #2
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Bonsoir,

    Je pense que tu devrai regarder du coté de ldconfig (man ldconfig)
    Il ne suffit pas d'avoir le .h pour compiler mais aussi que la librairie soit identifiée

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut ok, mais...
    Merci pour la réponse (extra rapide).

    Voila, j'ai donc créé le fichier
    /et/ld.so.conf
    dans lequel j'ai inséré:
    /home/rageice/work/perso/libs/jpeg-6b
    Avant d'éxécuter:
    sudo ldconfig -v | grep libjpeg
    (qui retourne:
    ldconfig: Can't stat /lib64: No such file or directory
    ldconfig: Can't stat /usr/lib64: No such file or directory
    libjpeg.so.62 -> libjpeg.so.62.0.0
    ).
    Mais cela ne change absoluement rien au résultat de mes:
    gcc -I/home/rageice/work/perso/libs/jpeg-6b/ -c file.c
    gcc -I/home/rageice/work/perso/libs/jpeg-6b/ -ljpeglib -o bin file.o

    Aurais je oublié quelque chose d'important?

    Merci d'avance.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    quand c'est un fichier d'include n'étant pas dans les chemins par défaut (/usr/include sur *n*x) il ne faut pas mettre <toto.h> mais "toto.h"....

  5. #5
    Membre émérite Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Par défaut
    Citation Envoyé par souviron34
    quand c'est un fichier d'include n'étant pas dans les chemins par défaut (/usr/include sur *n*x) il ne faut pas mettre <toto.h> mais "toto.h"....
    Pas si le repertoire d'include est spécifié à gcc

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 82
    Par défaut
    quand c'est un fichier d'include n'étant pas dans les chemins par défaut (/usr/include sur *n*x) il ne faut pas mettre <toto.h> mais "toto.h"....
    En fait, je fais toujours le test avec les 2: "toto.h" et <toto.h>, mais ca ne fait aucune différence.

    D'autre part, mon problème me fait penser à ceci:
    sur pas mal de distribution linux, quand on utilise <math.h>, lors de la compilation, il faut écrire '-lm' et non pas '-lmath'.
    C'est une chose de plus que je ne comprend pas, je sais pas si c'est vraiment le même prob que celui que j'ai actuellement, mais en tout cas ca y ressemble.
    Si vous avez d'autres idées, je suis preneur.
    Merci de vos réponses.

  7. #7
    Invité de passage
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1
    Par défaut Même problème mais NON résolu
    En fait j'ai exactement le même problème.

    sur ma débian (pro), il n'y a aucun soucis,
    sur mon ubuntu (perso) non plus,
    mais sur ma gentoo (machine dédiée ovh),
    il ne reconnait pas les références (références indéfinies...)

    ---------------------------- voici mon makefile :

    CC=g++
    CPPFLAGS=-W -Wall -ansi -pedantic
    LDFLAGS=
    COMMUN=/usr/include/naoned/commun/v1.3/

    viewer.cgi: viewer.o image.o wrbmp.o rdbmp.o $(COMMUN)function.o $(COMMUN)error.o $(COMMUN)cgi_light.o
    $(CC) -o viewer.cgi viewer.o image.o wrbmp.o rdbmp.o $(COMMUN)function.o $(COMMUN)error.o $(COMMUN)cgi_light.o -ljpeg

    viewer.o: viewer.cpp
    $(CC) -o viewer.o -c -O2 viewer.cpp $(CPPFLAGS)

    image.o: image.cpp image.hpp /usr/include/jpeglib.h /usr/include/jversion.h /usr/include/cdjpeg.h
    $(CC) -o image.o -c -O2 image.cpp $(CPPFLAGS)

    wrbmp.o: wrbmp.c /usr/include/jpeglib.h /usr/include/jversion.h /usr/include/cdjpeg.h
    $(CC) -o wrbmp.o -c -O2 wrbmp.c $(CPPFLAGS)

    rdbmp.o: rdbmp.c /usr/include/jpeglib.h /usr/include/jversion.h /usr/include/cdjpeg.h
    $(CC) -o rdbmp.o -c -O2 rdbmp.c $(CPPFLAGS)

    $(COMMUN)function.o: $(COMMUN)function.cpp $(COMMUN)function.hpp
    $(CC) -o $(COMMUN)function.o -c -O2 $(COMMUN)function.cpp $(CPPFLAGS)

    $(COMMUN)error.o: $(COMMUN)error.cpp $(COMMUN)error.hpp
    $(CC) -o $(COMMUN)error.o -c -O2 $(COMMUN)error.cpp $(CPPFLAGS)

    $(COMMUN)cgi_light.o: $(COMMUN)cgi_light.cpp $(COMMUN)cgi_light.hpp
    $(CC) -o $(COMMUN)cgi_light.o -c -O2 $(COMMUN)cgi_light.cpp $(CPPFLAGS)

    clean:
    rm -f *.o


    ----------------------------- et voici le résultat du make :

    g++ -o viewer.o -c -O2 viewer.cpp -W -Wall -ansi -pedantic
    viewer.cpp: In function `int main()':
    viewer.cpp:66: attention : variable � result � inutilis�e
    g++ -o image.o -c -O2 image.cpp -W -Wall -ansi -pedantic
    image.cpp: In member function `int IMAGE::bmp_to_jpeg()':
    image.cpp:308: attention : variable � pszBmpFile � inutilis�e
    image.cpp:309: attention : variable � pszJpgFile � inutilis�e
    image.cpp: In member function `std::string IMAGE::get_zone(int, int, int, int, float, int)':
    image.cpp:437: attention : converting vers � int � � partir de � double �
    image.cpp:438: attention : converting vers � int � � partir de � double �
    image.cpp:439: attention : converting vers � int � � partir de � double �
    image.cpp:522: attention : converting vers � int � � partir de � double �
    image.cpp:526: attention : converting vers � int � � partir de � double �
    image.cpp:392: attention : � width � pourrait �tre utilis� sans �tre initialis� dans cette fonction
    image.cpp:393: attention : � height � pourrait �tre utilis� sans �tre initialis� dans cette fonction
    g++ -o wrbmp.o -c -O2 wrbmp.c -W -Wall -ansi -pedantic
    wrbmp.c:74: attention : param�tre � rows_supplied � inutilis
    wrbmp.c:109: attention : param�tre � rows_supplied � inutilis�
    wrbmp.c:143: attention : param�tre � cinfo � inutilis�
    wrbmp.c:143: attention : param�tre � dinfo � inutilis�
    g++ -o rdbmp.o -c -O2 rdbmp.c -W -Wall -ansi -pedantic
    rdbmp.c:413: attention : param�tre � cinfo � inutilis�
    rdbmp.c:413: attention : param�tre � sinfo � inutilis�
    g++ -o /usr/include/naoned/commun/v1.3/function.o -c -O2 /usr/include/naoned/commun/v1.3/function.cpp -W -Wall -ansi -pedantic
    g++ -o /usr/include/naoned/commun/v1.3/error.o -c -O2 /usr/include/naoned/commun/v1.3/error.cpp -W -Wall -ansi -pedantic
    g++ -o /usr/include/naoned/commun/v1.3/cgi_light.o -c -O2 /usr/include/naoned/commun/v1.3/cgi_light.cpp -W -Wall -ansi -pedantic
    /usr/include/naoned/commun/v1.3/cgi_light.cpp: In member function `void CGI::decode_query()':
    /usr/include/naoned/commun/v1.3/cgi_light.cpp:169: attention : variable � time_cpu � inutilis�e
    /usr/include/naoned/commun/v1.3/cgi_light.cpp: In member function `void CGI::parse_query()':
    /usr/include/naoned/commun/v1.3/cgi_light.cpp:231: attention : variable � time_cpu � inutilis�e
    g++ -o viewer.cgi viewer.o image.o wrbmp.o rdbmp.o /usr/include/naoned/commun/v1.3/function.o /usr/include/naoned/commun/v1.3/error.o /usr/include/naoned/commun/v1.3/cgi_light.o -L/usr/lib/ -ljpeg
    image.o: dans la fonction � IMAGE::bmp_to_jpeg() �:
    image.cpp.text+0x24): r�f�rence ind�finie vers � jpeg_std_error(jpeg_error_mgr*) �
    image.cpp.text+0x44): r�f�rence ind�finie vers � jpeg_CreateCompress(jpeg_compress_struct*, int, unsigned int)�
    image.cpp.text+0x57): r�f�rence ind�finie vers � jpeg_set_defaults(jpeg_compress_struct*) �
    image.cpp.text+0xc6): r�f�rence ind�finie vers � jpeg_default_colorspace(jpeg_compress_struct*) �
    image.cpp.text+0xd2): r�f�rence ind�finie vers � jpeg_stdio_dest(jpeg_compress_struct*, _IO_FILE*) �
    image.cpp.text+0xe3): r�f�rence ind�finie vers � jpeg_start_compress(jpeg_compress_struct*, int) �
    image.cpp.text+0x119): r�f�rence ind�finie vers � jpeg_write_scanlines(jpeg_compress_struct*, unsigned char**, unsigned int)�
    image.cpp.text+0x139): r�f�rence ind�finie vers � jpeg_finish_compress(jpeg_compress_struct*) �
    image.cpp.text+0x141): r�f�rence ind�finie vers � jpeg_destroy_compress(jpeg_compress_struct*) �
    image.o: dans la fonction � IMAGE::getsize() �:
    image.cpp.text+0x1ce): r�f�rence ind�finie vers � jpeg_std_error(jpeg_error_mgr*) �
    image.cpp.text+0x1f4): r�f�rence ind�finie vers � jpeg_CreateDecompress(jpeg_decompress_struct*, int, unsigned int)�
    image.cpp.text+0x219): r�f�rence ind�finie vers � jpeg_stdio_src(jpeg_decompress_struct*, _IO_FILE*) �
    image.cpp.text+0x22a): r�f�rence ind�finie vers � jpeg_read_header(jpeg_decompress_struct*, int) �
    image.o: dans la fonction � IMAGE::jpeg_to_bmp() �:
    image.cpp.text+0x18b4): r�f�rence ind�finie vers � jpeg_std_error(jpeg_error_mgr*) �
    image.cpp.text+0x18da): r�f�rence ind�finie vers � jpeg_CreateDecompress(jpeg_decompress_struct*, int, unsigned int)�
    image.cpp.text+0x194f): r�f�rence ind�finie vers � jpeg_stdio_src(jpeg_decompress_struct*, _IO_FILE*) �
    image.cpp.text+0x1967): r�f�rence ind�finie vers � jpeg_read_header(jpeg_decompress_struct*, int) �
    image.cpp.text+0x1aec): r�f�rence ind�finie vers � jpeg_start_decompress(jpeg_decompress_struct*) �
    image.cpp.text+0x1b29): r�f�rence ind�finie vers � jpeg_read_scanlines(jpeg_decompress_struct*, unsigned char**, unsigned int)�
    image.cpp.text+0x1c8c): r�f�rence ind�finie vers � jpeg_finish_decompress(jpeg_decompress_struct*) �
    image.cpp.text+0x1c9a): r�f�rence ind�finie vers � jpeg_destroy_decompress(jpeg_decompress_struct*) �
    wrbmp.o: dans la fonction � jinit_write_bmp(jpeg_decompress_struct*, int) �:
    wrbmp.c.text+0x832): r�f�rence ind�finie vers � jpeg_calc_output_dimensions(jpeg_decompress_struct*) �
    collect2: ld a retourn� 1 code d'�tat d'ex�cution
    make: *** [viewer.cgi] Erreur 1


    Merci pour votre aide...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/10/2005, 11h29
  2. [VBA][Excel]Petite question bête !
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/09/2005, 15h36
  3. [MFC] Question bête sur les CListBox
    Par gwendo dans le forum MFC
    Réponses: 1
    Dernier message: 10/08/2005, 16h43
  4. [langage] Question débutant compilation PERL
    Par sebbyoguard dans le forum Langage
    Réponses: 5
    Dernier message: 04/09/2004, 19h39
  5. Numéro auto ===== Question bête
    Par Nicos77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2003, 13h04

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