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

Interfaces de programmation Oracle Discussion :

[PRO*C] oracle 10g et machine AIX


Sujet :

Interfaces de programmation Oracle

Vue hybride

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

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut [PRO*C] oracle 10g et machine AIX
    salut

    J'ai un ensemble de modules Pro$C qui compile et tourne correctement en oracle v9.
    Je dois aujourd'hui les recompiler pour Oracle V10 sur une machine AIX en 64bits (d'ailleurs, je crois que je n'ai pas le choix sur ce dernier aspect).

    J'arrive à produire les modules.o ( cela ne s'est pas fait sans mal )
    J'en arrive à l'édition de lien et alors la ...
    L'erreur que j'obtiens est la suivante :
    /opt/oracle/ora1020/bin/oraxlc -o loadcaly traite_ceno.o traite_cdel.o traite_cesl.o traite_cfal.o traite_nbto.o messages.o main.o oraproc.o verif_env.o load_file.o -L/opt/oracle/ora1020/lib32/ -lclntsh -lld -lm `cat /opt/oracle/ora1020/lib32/sysliblist` -lm -lc_r -lpthreads
    ld: 0706-006 Cannot find or open library file: -l clntsh
    ld:open(): No such file or directory
    make: The error code from the last command is 255.
    bon pas de panique, je tente d'aller plus loin, je supprime l'option de librairie clntsh et je lance alors la chaine de compilation suivante :

    /opt/oracle/ora1020/bin/oraxlc -o loadcaly traite_ceno.o traite_cdel.o traite_cesl.o traite_cfal.o traite_nbto.o messages.o main.o oraproc.o verif_env.o load_file.o -L/opt/oracle/ora1020/lib32/ -lld -lm `cat /opt/oracle/ora1020/lib32/sysliblist` -lm -lc_r -lpthreads
    ld: 0711-738 ERROR: Input file /lib/crt0.o:
    XCOFF32 object files are not allowed in 64-bit mode.
    noter que tout à été compilé avec la variable d'environnement MODE_OBJET=64

    si je relance la dernière compilation sans l'option -b64, alors j'ai le message inverse
    XCOFF64 object files are not allowed in 32-bit mode.
    je veux bien tente la moyenne , mais l'option -b48 ne marche pas.....

    et alors qu'est ce que je fais moi après une telle expérience ?
    comment résoudre le pb de la lib clntsh, puis le pb de 32/64 bits ?
    Merci de votre aide

  2. #2
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    en post-install, vous avez bien joué le genclntst ?

    que vaut $LD_LIBRARY_PATH ?

    pourquoi en OBJECT_MODE=64 vous faites références à des trucs sous $ORACLE_HOME/lib32 ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 30
    Par défaut
    Salut,

    Je te propose les 2 makefile que j'utilise ...

    Sous AIX c'est LIBPATH qui est utilise et non LD_LIBRARY_PATH il me semble ... Et peut etre meme LIBPATH64, ou LIBPATH_64.
    Enfin moi ca marche avec LIBPATH.

    J'ai un makefile pour le .pc et un pour le .c (mais tu peux les merger) ...
    La commande pour generer le binaire est: make -f Makefilepc; make
    Qui genere un binaire "myprocc".

    Le fichier 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
     
    CC=/usr/local/gcc-3.3.3/bin/gcc
    CFLAGS=-maix64 -D_LP64  -D__AIX__ -gxcoff -W -Wall -Wpointer-arith -Wshadow -Wcast-qual -Wcast-align -Winline -Wmissing-prototypes -Wstrict-prototypes -Wimplicit
    IFLAGS=-I/usr/include -I$(ORACLE_HOME)/precomp/public/
     
    LIBORACLE=$(ORACLE_HOME)/lib
    LDFLAGS=-L$(LIBORACLE) -lclntsh -maix64
     
    # Sources files
    SRCS_C:=$(wildcard *.c)
     
    # Object files
    OBJS:=$(SRCS_C:%.c=%.o)
     
    # Exe
    EXE=myprocc
     
    # Rules for converting .c -> .o
    .SUFFIXES: .c .o
     
    .c.o:
    	$(CC) $(CFLAGS) -c $*.c
     
    # Target myprocc
    myprocc: $(OBJS)
    	$(CC) -maix64 -o $(EXE) $(OBJS) $(LDFLAGS)
     
    clean:
    	rm *.o;rm *.c
    Le fichier Makefilepc
    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
     
    PROC=proc
     
    SQLCHECKFLAG=SYNTAX
     
    # proc compiler variables
    PROCFLAGS= CODE=ANSI_C SQLCHECK=$(SQLCHECKFLAG)           \
    INCLUDE=/usr/include
     
    # Sources files
    SRCS_PC:=$(wildcard *.pc)
     
    # Object files
    OBJS:=$(SRCS_PC:%.pc=%.c)
     
    # Rules for converting .pc -> .c
    .SUFFIXES: .pc .c
     
    .pc.c:
    	$(PROC) $(PROCFLAGS) iname=$* oname=$*.c
     
    # Target build
    build: $(OBJS)
    Attendu que tu es proc dans ton PATH ...

    Voila, il faut peut etre un adapter mais ce marche dans mon environement.

    a+
    jr

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut beeeeen...
    juste une remarque ... je ne bosse pas avec gcc
    J'ai un compilateur installé, c'est le compilateur c d'IBM

    * Licensed Materials - Property of IBM.
    * IBM XL C Enterprise Edition V8.0 for AIX
    * (5724-M11)
    * IBM XL C/C++ Enterprise Edition V8.0 for AIX
    * (5724-M12)
    * (C) Copyright IBM Corp. 1991, 2005.


    Les options que tu me décris sont radicalement différentes de celles de mon compilateur, je n'en ai même pas trouvé 2 qui se ressemblaient
    je vais faire se focaliser noter équipe d'infra sur l'install de clntsh d'abord, on verra la suite après
    Merci

  5. #5
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Citation Envoyé par LeoAnderson Voir le message
    en post-install, vous avez bien joué le genclntst ?

    que vaut $LD_LIBRARY_PATH ?

    pourquoi en OBJECT_MODE=64 vous faites références à des trucs sous $ORACLE_HOME/lib32 ?
    LD_LIBRARY_PATH ou LIBPATH !

    [edit]
    d'ailleurs, XL C et XL C/C++ sont les seuls compilos certifiés sous AIX !
    [/edit]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LD_LIBRARY_PATH =  /usr/local/lib:/usr/lib:/lib

    pour en revenir à la variable BASE_OBJET=64, j'ai trouvé sur un autre forum, que celle-ci pourrait être la source de mes pb, en vain...
    que je compile avec ou sans cette balise ne change rien à l'affaire

  7. #7
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    wouh-ouh... et les autres questions ?

    et puis, ensuite, essayez de rajouter $ORACLE_HOME/lib dans LD_LIBRARY_PATH et LIBPATH, soyons fous !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Par défaut
    Les autres questions ? toujours pas de réponse des adm Oracle, y sont dans le sud, alors ...
    p'têt que si je lance un avis de recherche sur la plage ?...

    comment je peux savoir si le genclntst à été lancé ? y a t'il des fichiers particuliers que je dois trouver ( clntsh.? par ex ?)

    Bon, j'ai essayé d'ajouter $ORACLE_HOME/lib dans le LD_LIBRARY_PATH chou blanc !
    j'ai essayé avec $ORACLE_HOME/lib32 (quitte à être fou, autant que ce soit vrai ) et bien, cela ne change rien

    Oliv.

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

Discussions similaires

  1. [PRO*C] compilation statique oracle 10g
    Par methosxp dans le forum Interfaces de programmation
    Réponses: 0
    Dernier message: 14/09/2007, 17h59
  2. installation oracle 10G sous XP Pro.
    Par ylarvor dans le forum Oracle
    Réponses: 2
    Dernier message: 14/04/2007, 21h19
  3. [PRO*C] Correspondances SQL RDB et SQL Oracle 10G
    Par keiserjo dans le forum Interfaces de programmation
    Réponses: 3
    Dernier message: 26/09/2006, 18h02
  4. [Oracle 10g][Personal Edition][XP Pro][Listener]
    Par Marco_SAP dans le forum Oracle
    Réponses: 2
    Dernier message: 18/06/2005, 12h21
  5. Installation ORACLE 10g sous XP Pro
    Par DUCORROY dans le forum Oracle
    Réponses: 7
    Dernier message: 21/10/2004, 09h08

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