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] Débuter


Sujet :

Interfaces de programmation Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 83
    Par défaut [PRO*C] Débuter
    Bonjour,

    Voilà, je débute avec avec pro*c et j'aimerai savoir comment compiler un fichier .c ou cpp qui vient d'être généré par le précompilateur du client oracle 9.
    J'ai trouvé dans le forum la commande "proc", mais comment l'utiliser?
    J'aimerai avoir plus de détail sur son utilisation et aussi sur les fichier .mk (makefile)?

    Merçi

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Voila un exemple pour Oracle8
    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
    echo $CC_CC
    xlc_r
    echo $CC_CFLAGS
    -I. -qMAXMEM=16384 -qSPILL=4096 -L/oracle/server/ora8.1.7/lib
    echo $CC_PCC
    proc
    echo $CC_PCCINC
    /oracle/server/ora8.1.7/precomp/public CHAR_MAP=VARCHAR2 DBMS=V7 unsafe_null=yes
    echo $CC_OTHERLIBS
    -lm 
    echo $CC_ORALIBS
    -lclntsh -lsql8 -lclient8 -lcommon8 -lgeneric8 -lclient8 -lcommon8 -lgeneric8 -lnls8 -lcore8 -lnls8 -lcore8 -lnls8
    
    
    # fichier:  makefile
    #
    # exemple de procedure de compilation de pro-c non personnalisee
    # la commande est la suivante :
    #            make nom-du-pro-c
    # exemple : pour le programme suivant essai.pc faire : make essai
    #
    .SUFFIXES:
    LANGUAGE=
    .SUFFIXES: .pc
    CC=$(CC_CC)
    CFLAGS=$(CC_CFLAGS) -I$(ORACLE_HOME)/precomp/public
    PCC=$(CC_PCC)
    PCCINC=$(CC_PCCINC)
    PCCFLAGS=include=$(PCCINC) ireclen=132 select_error=no ltype=none hold_cursor=yes sqlcheck=semantics userid=USER/MOT_DE_PASSE
    
    OTHERLIBS=$(CC_OTHERLIBS)
    
    LIBS =$(CC_SQLLIB) $(CC_NETLIBS) $(CC_ORALIBS)
    
    .pc:
            $(PCC) $(PCCFLAGS) iname=$*.pc
    
            $(CC) $(CFLAGS) $*.c -o $* $(LIBS) $(OTHERLIBS)

  3. #3
    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
    Oracle 8 sous AIX !

    mais le plus simple est de commencer par regarder les exemples fournis par Oracle ... on est sûr qu'ils marchent et qu'ils sont pour la version/plateforme que l'on utilise !


    .pc : Pseudo-C d'accès aux données (Pro*C). On y trouve par exemple des définitions de VARCHAR
    .c : Langage pur C. Le VARCHAR est devenu CHAR*
    .o : objet binaire obtenu par compilation du .c
    .exe : objet exécutable obtenu par linkage des différents .o

    .pc -> .c : proc fournit par Oracle
    .c -> .o : compilation effectuée par le compilateur (Visual Studio, Sun Forte ou Sun Workshop, XLC, gcc, ...)
    .o -> .exe : edition de lien également effectuée par le compilateur

    Le makefile est un ensemble de commande permettant d'automatiser la séquence ci-dessus via la commande make.
    Citation Envoyé par man make
    DESCRIPTION
    The purpose of the make utility is to determine automatically which pieces of a large
    program need to be recompiled, and issue the commands to recompile them. The manual
    describes the GNU implementation of make, which was written by Richard Stallman and
    Roland McGrath, and is currently maintained by Paul Smith. Our examples show C programs,
    since they are most common, but you can use make with any programming language whose com-
    piler can be run with a shell command. In fact, make is not limited to programs. You
    can use it to describe any task where some files must be updated automatically from oth-
    ers whenever the others change.

    To prepare to use make, you must write a file called the makefile that describes the
    relationships among files in your program, and the states the commands for updating each
    file. In a program, typically the executable file is updated from object files, which
    are in turn made by compiling source files.
    Un exemple de pro*C : http://www.cs.utsa.edu/~wzhang/cs374...pcsample1.html
    Un exemple de make file : http://gcc.gnu.org/ml/gcc-help/2003-...7/demo_proc.mk

    http://oracle.estsurinternet.com/zeb...trait_pro2.htm

  4. #4
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 83
    Par défaut
    merçi pour votre réponse!
    j'ai trouvé la commande proc et make dans la documentation d'oracle. J'ai réussi à le compiler par ligne de commande avec l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     proc parse=none mode=oracle userid=demo/demo@orhref sample1.pc sqlcheck=semantics
    Mais lorsque j'execute la commande : "make -f proc.mk sample1" ou juste la commande "make sample1", il me donne l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
    Fatal: Unable to open makefile
    Pour l'instant je n'est que le fichier sample1.c obtenu après la pré-compilation.
    Donc je ne pense pas que le fichier makefile soit vraiment utile pour le moment. Ai-je raison?

    Sinon, ce qui me préoccupe maintenant c'est comment obtenir l'exécutable (étape à suivre)?

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    make -f demo_proc.mk EXE=sample1 OBJS=sample1.o
    c'est tout !

    make va se charger d'appeller proc et cc
    make va partir du .pc pour arriver à l'exécutable

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Voilà ce qu’il faut changer pour Oracle 9
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    echo $CC_CC
    xlc_r
    echo $CC_CFLAGS
    -q64 -I. -L/oracle/server/ora9.2.0/lib
    echo $CC_PCC
    proc
    echo $CC_PCCINC
    /oracle/server/ora9.2.0/precomp/public CHAR_MAP=VARCHAR2 DBMS=V7unsafe_null=yes
    echo $CC_OTHERLIBS
    -lm -lld -lc_r -lpthreads
    echo $CC_ORALIBS
    /lib/crt0_64.o -ldl -lc -lm -lpthreads -lodm -lbsd_r -lld -lperfstat -lclntsh
    Pour Oracle 10 reprenez la même idée. Pour passer à Windows c’est simple.

    Mais je pense que M Leo Anderson a raison, peut être au début c’est plus simple de se familiariser avec les exemples fourni par Oracle.

  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
    et vous continuez à lui proposer un source prévu pour AIX 64 bits

    il aura l'air malin s'il veut tester sous Linux 32 Bits....
    en plus, pourquoi imposer une compatibilité V7 ?

  8. #8
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 83
    Par défaut
    Je viens de lancer la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        make -f demo_proc.mk EXE=sample1 OBJS=sample1.o
        MAKE Version 5.2  Copyright (c) 1987, 2000 Borland
        Error demo_proc.mk 3: Command syntax error
        *** 1 errors during make ***
    ... et j'obtiens une belle erreur.

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

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Débat : quelle distribution Linux choisir pour débuter ?
    Par Anonymous dans le forum Distributions
    Réponses: 227
    Dernier message: 18/02/2015, 10h09
  3. Débuter en pro
    Par Pierrick584 dans le forum Débuter
    Réponses: 20
    Dernier message: 30/12/2005, 11h51
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [PRO*C] Recherche information
    Par Anonymous dans le forum Interfaces de programmation
    Réponses: 2
    Dernier message: 04/04/2002, 17h53

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