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

Linux Discussion :

Compilation avec une lib partagée


Sujet :

Linux

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 859
    Points : 4 813
    Points
    4 813
    Par défaut Compilation avec une lib partagée
    Bonjour

    Voici mon problème. Sur une machine, j'ai rapatrié mon code C++ pour le recompiler et voir si la différence de processeur n'entraînait pas d'altérations à l'exécution.
    En fait, j'ai 2 répertoire : 1 avec les sources d'une librairie aprtagé (qui compile très bien). Cette librairie est donc localisé dans /home/gldavid/Lib/libCLib.so. Puis dans un autre répertoire, j'ai l'application qui va utiliser cette librairie. Mon problème est à la compilation de l'application : la compilation se passe très bien mais, à l'édition de liens, il ne trouve pas ma librairie partagée.
    Pourtant, j'ai édité ma variable $LD_LIBRARY_PATH de sorte qu'elle ait comme valeur /home/gldavid/Lib.
    Ai-je oublié une étape ?

    Merci d'avance de votre aide.

    @++

  2. #2
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    L'option -L ne fonctionne pas avec g++ ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -L /home/gldavid/Lib ...

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 859
    Points : 4 813
    Points
    4 813
    Par défaut
    Bonjour

    Merci de ta réponse.
    J'ai essayé avec l'option -L mais dans ce cas, à l'édition de liens, je me prends plein de "undefined reference".

    Merci d'avance pour toute réponse.

    @++

  4. #4
    Membre confirmé Avatar de Tchetch
    Inscrit en
    Mars 2002
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 401
    Points : 477
    Points
    477
    Par défaut
    Salut,

    Je crois qu'il faut utilise l'option -l pour spécifier la librairie et -L le dossier, comme donné dans la page de manuel :

    -llibrary
    -l library
    Search the library named library when linking. (The second alter-
    native with the library as a separate argument is only for POSIX
    compliance and is not recommended.)

    It makes a difference where in the command you write this option;
    the linker searches and processes libraries and object files in the
    order they are specified. Thus, foo.o -lz bar.o searches library z
    after file foo.o but before bar.o. If bar.o refers to functions in
    z, those functions may not be loaded.

    The linker searches a standard list of directories for the library,
    which is actually a file named liblibrary.a. The linker then uses
    this file as if it had been specified precisely by name.

    The directories searched include several standard system directo-
    ries plus any that you specify with -L.

    Normally the files found this way are library files---archive files
    whose members are object files. The linker handles an archive file
    by scanning through it for members which define symbols that have
    so far been referenced but not defined. But if the file that is
    found is an ordinary object file, it is linked in the usual fash-
    ion. The only difference between using an -l option and specifying
    a file name is that -l surrounds library with lib and .a and
    searches several directories.
    et

    -Ldir
    Add directory dir to the list of directories to be searched for -l.
    En français : http://www.linux-kheops.com/doc/man/...an1/gcc.1.html

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/12/2014, 17h42
  2. Réponses: 4
    Dernier message: 28/05/2008, 19h31
  3. Réponses: 5
    Dernier message: 18/06/2006, 12h48
  4. [Tomcat]Compiler avec les libs
    Par javaSudOuest dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/09/2005, 20h21
  5. Chargement d'une lib partagée C++ dans un programme C
    Par Zero dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 30/09/2003, 16h40

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