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 :

Probleme de compilation avec Makefile et Oracle V10


Sujet :

Linux

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2008
    Messages : 217
    Points : 71
    Points
    71
    Par défaut Probleme de compilation avec Makefile et Oracle V10
    Bonjour,

    voilà mon soucis, le makefile que j'utilise fonctionne apperement qu'en Oracle V8 ou 9 puisque passé en V10, il me compile bien tous mes fichier c et proC, cependant quand je veux executé l'exe il me met memory fault.

    Je ne pense pas que cela vient de la programmation puisqu'avant cela fonctionné.

    Voici les makefiles (en racourcissant un peu les variables pas importante je les passe):

    Makefile fichier non ProC:
    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
    #----------------------------------------------------------------------------
    # Inclusion des definitions fournies par Oracle (NE PAS MODIFIER !!!)
    #----------------------------------------------------------------------------
     
    include $(ORACLE_HOME)/precomp/lib/env_precomp.mk
    # Utilisation de la macro INCLUDE pour preciser au compilateur les chemins des repertoires de recherche des fichiers include
     
    INCLUDE=$(I_SYM). $(I_SYM)$(PRECOMPHOME)public $(I_SYM)$(RDBMSHOME)public $(I_SYM)$(RDBMSHOME)demo $(I_SYM)$(PLSQLHOME)public $(I_SYM)$(NETWORKHOME)public $(I_SYM)$(INC_DIR) $(I_SYM)$(WAVE_DIR)/demo/interapp/opi
     
    #INCLUDE=$(I_SYM). $(PRECOMPPUBLIC)
    #INCLUDE1 = $(INCLUDE) -I/usr/include -I/usr/include/sys -I/usr/include/CC -I$(INC_DIR)
     
    # Options utilisees par le compilateur C++
     
    # Sans debugger
    #CCFLAGS = $(CPLUS_CFLAGS)
     
    # Pour debugger
    CCFLAGS = -g -w $(CPLUS_CFLAGS)
     
     
    # Generation des cibles du makefile
    # =========================================
    all : $(USR_OBJ)
     
    clean :
            rm $(USR_OBJ)
     
    $(OBJ_DIR)/psload.o : psload.c $(USR_INC)
            @echo "C++ psload.c"
            @echo "Compilation psload"
            @$(CPLUSPLUS) -c $(CCFLAGS) $(INCLUDE) -o $(OBJ_DIR)/psload.o psload.c
     
    $(OBJ_DIR)/pserrsql.o:   $(SRC_DIR)/pserrsql.c $(USR_INC)
            @echo "C++ pserrsql.c"
            @echo "Compilation pserrsql"
            @$(CPLUSPLUS) -c $(CCFLAGS) -o $(OBJ_DIR)/pserrsql.o $(SRC_DIR)/pserrsql.c
     
    $(OBJ_DIR)/psficht.o:   $(SRC_DIR)/psficht.c $(USR_INC)
            @echo "C++ psficht.c"
            @echo "Compilation psficht"
            @$(CPLUSPLUS) -c $(CCFLAGS) -o $(OBJ_DIR)/psficht.o $(SRC_DIR)/psficht.c
    Le makefile pour le ProC, je ne montre que la compile les variable les memes :
    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
    # Generation des cibles du makefile
    # =========================================
    all : $(USR_OBJ)
     
    clean :
            @echo "Nettoyage"
            rm $(USR_OBJ) $(SRC_DIR)/*.lis $(SRC_DIR)/pssess.c $(SRC_DIR)/psreq.c
     
     
    $(OBJ_DIR)/pssess.o : $(SRC_DIR)/pssess.pc $(USR_INC)
            @echo "Proc pssess"
            @$(PROC) $(PROCFLAGS) iname=$(SRC_DIR)/pssess.pc
            @echo "Compilation pssess"
            @$(CPLUSPLUS) -c -D_DEBUG -D__hpux -g $(CCFLAGS) -o $(OBJ_DIR)/pssess.o $(SRC_DIR)/pssess.c
     
    $(OBJ_DIR)/psreq.o : $(SRC_DIR)/psreq.pc $(USR_INC)
            @echo "Proc psreq "
            @$(PROC) $(PROCFLAGS) iname=$(SRC_DIR)/psreq.pc
            @echo "Compilation psreq"
            @$(CPLUSPLUS) -c -D_DEBUG -D__hpux -g $(CCFLAGS) $(INCLUDE) -o $(OBJ_DIR)/psreq.o $(SRC_DIR)/psreq.c
    Et enfin le makefile qui créé l'exe:
    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
    #----------------------------------------------------------------------------
    # Inclusion des definitions fournies par Oracle (NE PAS MODIFIER !!!)
    #----------------------------------------------------------------------------
     
    include $(ORACLE_HOME)/precomp/lib/env_precomp.mk
     
    LIBHOME=$(ORACLE_HOME)/lib/
    # Utilisation de la macro INCLUDE pour preciser au compilateur les chemins des repertoires de recherche des fichiers include
    INCLUDE=$(I_SYM). $(I_SYM)$(PRECOMPHOME)public $(I_SYM)$(RDBMSHOME)public $(I_SYM)$(RDBMSHOME)demo $(I_SYM)$(PLSQLHOME)public $(I_SYM)$(NETWORKHOME)public $(I_SYM)$(INC_DIR) $(I_SYM)$(WAVE_DIR)/demo/interapp/opi
     
    # Options utilisees par le precompilateur PRO*C/C++
     
    # Option standard pour du code CPP
    PROCFLAGS=code=CPP parse=PARTIAL sqlcheck=FULL userid=$(USERID) include='($(INC_DIR))'
     
    # Options utilisees par le compilateur C++
     
    # Sans debugger
    CCFLAGS = $(CPLUS_CFLAGS)
     
    # Pour debugger
    #CCFLAGS = -mt -g
     
     
    # Generation des cibles du makefile
    # =========================================
    exe : psload.exe
     
    psload.exe : ${USR_OBJ}
            @echo "Generation executable"
            @$(CPLUSPLUS) -o psload.exe $(USR_OBJ) -L$(LIBHOME) ${PROLDLIBS}
     
    move :
            @echo "Deplacement de l'executable"
            mv psload.exe $(EXE_DIR)
    Voilà j'espere que vous pourrez m'aider car çà fait deux jours que j'essaie plein de truc et toujours pareille, le meme erreur ce Memory fault

    NB : je ne sais si c'est important mais mon exe a une taille inférieure que l'exe créé avec Oracle V8

  2. #2
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    Citation Envoyé par miketidy Voir le message
    Je ne pense pas que cela vient de la programmation puisqu'avant cela fonctionné.
    Faux. S'il y a un comportement indéfini, par "chance" (par exemple des variables miraculeusement initialisées à zéro) ça peut "fonctionner" mais dans un autre contexte (ces variables ne sont pas réinitialisées...) ça peut finir en SIGSEGV !
    Après, il se peut aussi que le comportement des fonctions de la lib aient changées et que tu ne l'aies pas vu ! Regarde si tes warnings (je ne vois pas -Wall (ce n'est peut-être pas gcc...) voire la doc s'il y a sur une migration.
    En dernier lieu, regardes le core...

  3. #3
    Membre confirmé

    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Février 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2005
    Messages : 464
    Points : 646
    Points
    646
    Par défaut
    Salut !
    Donne nous les versions de tes $(CPLUPLUS) sur tes deux systèmes.

    Qu'est ce qu'il y a la dedans ? include $(ORACLE_HOME)/precomp/lib/env_precomp.mk

    Peux tu également nous donner les lignes développées de :
    @$(CPLUSPLUS) -c $(CCFLAGS) $(INCLUDE) -o $(OBJ_DIR)/psload.o psload.c
    @$(CPLUSPLUS) -o psload.exe $(USR_OBJ) -L$(LIBHOME) ${PROLDLIBS}

    Pour moi il est possible que tu te sois linké avec des librairies qui n'ont pas été compilés avec les mêmes outils ou dans une version différentes sur les deux systèmes.

    Avec la commande 'ldd' ou équivalent pour ton environnement vérifie que les libraires dynamiques sont retrouvées.

Discussions similaires

  1. John :: Help!! Probleme de compilation avec SDL_gfx
    Par Raggajohnjohn dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 29/10/2005, 15h46
  2. Problème de compilation avec gcc
    Par Niktou dans le forum Linux
    Réponses: 9
    Dernier message: 27/09/2005, 15h18
  3. Réponses: 19
    Dernier message: 28/06/2005, 14h16
  4. probleme de compilation avec boost
    Par doof dans le forum Bibliothèques
    Réponses: 7
    Dernier message: 07/06/2005, 21h38
  5. Problemes de compilation avec g++ sous linux
    Par Selimmel dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 19/09/2003, 13h43

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