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 :

Compiler et créer une librairie dynamique en C


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut Compiler et créer une librairie dynamique en C
    Salut,
    Voilà, je suis entrain de faire mon makefile. il a pour but de créer une librairie dynamique.
    Il y a 2 fichiers source qui utilisent plusieurs fonctions de 2 librairies statique que j'ai créé.
    Il faut donc que j'inclue dans la création de ma lib dynamique ces 2 lib static.
    voilà mon makefile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    # Localisation des sources.
    SRC_DIR=./src
     
    INCLUDE_FLAGS=-I${INC} -I${SRC_DIR}
    INCLUDE_CURL=-I${LOCAL}/curl/include
    INCLUDE_XMW=-I${LOCAL}/xmw/include
    # Repertoire de sortie des fichiers .obj
    OBJ_DIR = ${EXE}/objet_parasite
    # Repertoire de sortie de la librairie
    BIN_DIR = ${LIB}
    # Liste des fichiers objets.
    LIB_OBJ = ${OBJ_DIR}/send_msg.o ${OBJ_DIR}/secu_msg.o
    LIB_FINAL = ${BIN_DIR}/libmsg.so
    # lib static curl
    LIB_CURL=${LIBSTA}/libcurl.a
    # lib static xmw
    LIB_XMW=${LIBSTA}/libtools.a
     
     
    all : libmsg
     
    # -----------------------------------------------------------------
    # CONSTRUCTION DE LA LIB
    # -----------------------------------------------------------------
    libmsg : ${LIB_FINAL}
    ${LIB_FINAL} : ${LIB_OBJ}
    	@echo
    	@echo "------------------------------------------------------------"
    	@echo "Building " $@
    	@echo "------------------------------------------------------------"
    	@echo
    	${CC} -fPIC -shared -o ${LIB_FINAL} ${LIB_XMW} ${LIB_CURL} ${LIB_OBJ};
     
     
    # -----------------------------------------------------------------
    # CONSTRUCTION DES OBJETS
    # -----------------------------------------------------------------
    send_msg.o : ${OBJ_DIR}/send_msg.o
    ${OBJ_DIR}/send_msg.o : ${SRC_DIR}/send_msg.c
    	${CC} ${CFLAGS} ${INCLUDE_FLAGS} ${INCLUDE_XMW} -c $? -o $@ ;
     
    secu_msg.o : ${OBJ_DIR}/secu_msg.o
    ${OBJ_DIR}/secu_msg.o : ${SRC_DIR}/secu_msg.c
    	${CC} ${CFLAGS} ${INCLUDE_FLAGS} ${INCLUDE_XMW} -c $? -o $@ ;
    j'arrive pas a générer cette lib dynamique:
    ld: fatal: relocations remain against allocatable but non-writable sections
    collect2: ld returned 1 exit status
    make: *** [/etud_objp/m_v500/SunOS/lib/libmsg.so] Error 1

    quelqu'un peux me dire comment faire?

    Merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    trouver dans le man gcc :
    -mimpure-text suppresses the ``relocations remain against allocatable but non-writable sections'' linker
    error message. However, the necessary relocations will trigger copy-on-write, and the shared object is
    not actually shared across processes. Instead of using -mimpure-text, you should compile all source code
    with -fpic or -fPIC.

    This option is only available on SunOS and Solaris.
    si cela peut t aider ....
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Trop fort !!!!
    j'ai recompilé tous mes sources avec l'option -fPIC.
    Quand je génère la lib dynamique, ça marche (j'ai plus de messages d'erreurs).
    Maintenant, faut que je test si ma lib dynamique fonctionne...mais la, c'est une autre histoire.

    Beaucoup merci, merci beaucoup !!!

    Fifouille

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    merci au ....... man
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

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

Discussions similaires

  1. Extraire les objets d'une librairie dynamique
    Par Lapk_gre dans le forum C
    Réponses: 13
    Dernier message: 29/07/2008, 14h49
  2. chargement d'une librairie dynamique
    Par ltournayre dans le forum C
    Réponses: 11
    Dernier message: 29/09/2006, 17h11
  3. Linker une librairie dynamique
    Par Mathieu.J dans le forum Linux
    Réponses: 2
    Dernier message: 29/10/2005, 19h18
  4. Recompiler une librairie dynamique (DLL) en statique
    Par shenron666 dans le forum C++
    Réponses: 9
    Dernier message: 07/04/2005, 19h28
  5. création d'une librairie dynamique
    Par bilo2000 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 26/08/2004, 15h17

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