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

C Discussion :

linux et gcc compilation error


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut linux et gcc compilation error
    J'ai un programme *.c mais je n'arrive pas à la compiler. Voilà la commande et les différentes erreurs. Je suis nul en c et j'ai besoin de votre aide.

    Je suis sous fedora core 13 avec tous les outils de programmation installé.

    Avec la première ligne sans le -I/usr/include/linux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o dtesys dtesys.c -I/apps/retek92_fnac_dev/rms9000_src/oracle/lib/src -I/apps/oracle/Middleware/as_1/precomp/public -I/apps/oracle/Middleware/as_1/ -I/apps/oracle/Middleware/as_1/rdbms/public -I/apps/oracle/Middleware/as_1/plsql/include -I/apps/oracle/Middleware/as_1/ohs/include -I/usr/lib/gcc/i686-redhat-linux/4.4.4
    J'obients:

    /tmp/ccutgFu0.o: In function `main':
    dtesys.c.text+0x77): undefined reference to `LOGON'
    dtesys.c.text+0x103): undefined reference to `sqlcxt'
    dtesys.c.text+0x1c2): undefined reference to `sqlcxt'
    dtesys.c.text+0x1d8): undefined reference to `LOG_MESSAGE'
    dtesys.c.text+0x265): undefined reference to `sqlcxt'
    dtesys.c.text+0x27b): undefined reference to `LOG_MESSAGE'
    dtesys.c.text+0x308): undefined reference to `sqlcxt'
    dtesys.c.text+0x31e): undefined reference to `LOG_MESSAGE'
    dtesys.c.text+0x39e): undefined reference to `sqlcxt'
    dtesys.c.text+0x3b4): undefined reference to `CHECK_STATUS'
    dtesys.c.text+0x3d0): undefined reference to `LOG_MESSAGE'
    /tmp/ccutgFu0.o: In function `process':
    dtesys.c.text+0x49e): undefined reference to `sqlcxt'
    dtesys.c.text+0x4fe): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x7ae): undefined reference to `sqlcxt'
    dtesys.c.text+0x837): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x8cb): undefined reference to `sqlcxt'
    dtesys.c.text+0x948): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0xf55): undefined reference to `sqlcxt'
    dtesys.c.text+0xfb5): undefined reference to `WRITE_ERROR'
    /tmp/ccutgFu0.o: In function `calc_half':
    dtesys.c.text+0x1022): undefined reference to `CAL_TO_454'
    dtesys.c.text+0x1066): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x10d4): undefined reference to `CAL_TO_454_HALF'
    dtesys.c.text+0x1118): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x1147): undefined reference to `HALF_TO_454_FDOH'
    dtesys.c.text+0x118b): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x11ed): undefined reference to `HALF_TO_454_LDOH'
    dtesys.c.text+0x1231): undefined reference to `WRITE_ERROR'
    /tmp/ccutgFu0.o: In function `calc_month':
    dtesys.c.text+0x1304): undefined reference to `CAL_TO_454_FDOM'
    dtesys.c.text+0x1348): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x13e7): undefined reference to `CAL_TO_454_LDOM'
    dtesys.c.text+0x142b): undefined reference to `WRITE_ERROR'
    /tmp/ccutgFu0.o: In function `calc_week':
    dtesys.c.text+0x14a7): undefined reference to `CAL_TO_454_WNO'
    dtesys.c.text+0x14eb): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x1536): undefined reference to `C454_TO_CAL'
    dtesys.c.text+0x157a): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x15f8): undefined reference to `C454_TO_CAL'
    dtesys.c.text+0x163c): undefined reference to `WRITE_ERROR'
    /tmp/ccutgFu0.o: In function `update_unit':
    dtesys.c.text+0x18dc): undefined reference to `sqlcxt'
    dtesys.c.text+0x193c): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x1970): undefined reference to `LOG_MESSAGE'
    dtesys.c.text+0x1994): undefined reference to `LOG_MESSAGE'
    collect2: ld returned 1 exit status
    la seconde ligne avec -I/usr/include/linux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o dtesys dtesys.c -I/apps/retek92_fnac_dev/rms9000_src/oracle/lib/src -I/apps/oracle/Middleware/as_1/precomp/public -I/apps/oracle/Middleware/as_1/ -I/apps/oracle/Middleware/as_1/rdbms/public -I/apps/oracle/Middleware/as_1/plsql/include -I/apps/oracle/Middleware/as_1/ohs/include -I/usr/lib/gcc/i686-redhat-linux/4.4.4 -I/usr/include/linux
    et j'obtiens:

    In file included from /usr/include/stdio.h:75,
    from /usr/include/retek.h:36,
    from dtesys.c:160:
    /usr/include/libio.h:332: error: expected specifier-qualifier-list before âsize_tâ
    /usr/include/libio.h:364: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/libio.h:373: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/libio.h:495: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â_IO_sgetnâ
    In file included from /usr/include/retek.h:36,
    from dtesys.c:160:
    /usr/include/stdio.h:318: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:324: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:336: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:343: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:385: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:387: error: format string argument not a string type
    /usr/include/stdio.h:389: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:661: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:664: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:674: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdio.h:704: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âfreadâ
    /usr/include/stdio.h:710: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âfwriteâ
    /usr/include/stdio.h:732: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âfread_unlockedâ
    /usr/include/stdio.h:734: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âfwrite_unlockedâ
    In file included from /usr/include/retek.h:37,
    from dtesys.c:160:
    /usr/include/stdlib.h:140: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â__ctype_get_mb_cur_maxâ
    In file included from /usr/include/sys/select.h:46,
    from /usr/include/sys/types.h:220,
    from /usr/include/stdlib.h:320,
    from /usr/include/retek.h:37,
    from dtesys.c:160:
    /usr/include/bits/time.h:76: error: redefinition of âstruct timevalâ
    In file included from /usr/include/retek.h:37,
    from dtesys.c:160:
    /usr/include/stdlib.h:337: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:367: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:369: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
    /usr/include/stdlib.h:471: error: expected â)â before â__sizeâ
    /usr/include/stdlib.h:473: error: expected â)â before â__nmembâ
    /usr/include/stdlib.h:485: error: expected declaration specifiers or â...â before âsize_tâ
    In file included from /usr/include/stdlib.h:497,
    from /usr/include/retek.h:37,
    from dtesys.c:160:
    /usr/include/alloca.h:33: error: expected â)â before â__sizeâ
    In file included from /usr/include/retek.h:37,
    from dtesys.c:160:
    /usr/include/stdlib.h:503: error: expected â)â before â__sizeâ
    /usr/include/stdlib.h:508: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:508: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:756: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:756: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:757: error: nonnull argument with out-of-range operand number (argument 1, operand 5)
    /usr/include/stdlib.h:761: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:761: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:762: error: nonnull argument with out-of-range operand number (argument 1, operand 4)
    /usr/include/stdlib.h:840: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:843: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:847: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:851: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:860: error: expected declaration specifiers or â...â before âsize_tâ
    /usr/include/stdlib.h:863: error: expected â)â before â*â token
    /usr/include/stdlib.h:867: error: expected declaration specifiers or â...â before âwchar_tâ
    /usr/include/stdlib.h:871: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âmbstowcsâ
    /usr/include/stdlib.h:874: error: expected â=â, â,â, â;â, âasmâ or â__attribute__â before âwcstombsâ
    In file included from /usr/include/sys/ioctl.h:30,
    from /usr/include/termio.h:6,
    from /usr/include/retek.h:41,
    from dtesys.c:160:
    /usr/include/bits/ioctl-types.h:29: error: redefinition of âstruct winsizeâ
    /usr/include/bits/ioctl-types.h:38: error: redefinition of âstruct termioâ
    dtesys.c: In function âmainâ:
    dtesys.c:284: warning: incompatible implicit declaration of built-in function âstrcpyâ
    je ne sais plus quoi faire

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Salut

    Ta première erreur est claire: tu fais appel à une fonction sqlcxt qui n'est définie nulle part. Et ta ligne de compilation ne fait référence à aucune librairie spécifique alors que si je tape sqlcxt sur google j'arrive direct sur des trucs oracle. Donc à mon avis, il te faut compiler en indiquant que ton éditeur de lien doit utiliser une librairie oracle quelconque...

    Ta seconde erreur semble bizarre. On dirait que les include utilisés ne sont pas ceux correspondants à ton noyau...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    Ok j'ai rajouté -L /$ORACLE_HOME/lib -lclntsh -lm ce qui donne comme commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o dtesys dtesys.c -I/apps/rms9000/rms9000_src/oracle/lib/src -I/apps/oracle/Middleware/as_1/precomp/public -I/apps/oracle/Middleware/as_1/ -I/apps/oracle/Middleware/as_1/rdbms/public -I/apps/oracle/Middleware/as_1/plsql/include -I/apps/oracle/Middleware/as_1/ohs/include  -I/usr/lib/gcc/i686-redhat-linux/4.4.4/include/ -I/usr/include/ -L /$ORACLE_HOME/lib -lclntsh -lm

    et maintenant voilà les erreurs: je pense qu'elles sont dû à ce que gcc n'arrive pas à trouver le fichier *.h contenant ses reference. Pourant je lui précise bien au tt début avec -I/apps/rms9000/rms9000_src/oracle/lib/src

    /tmp/ccpZP4gG.o: In function `main':
    dtesys.c.text+0x77): undefined reference to `LOGON'
    dtesys.c.text+0x1d8): undefined reference to `LOG_MESSAGE'
    dtesys.c.text+0x27b): undefined reference to `LOG_MESSAGE'
    dtesys.c.text+0x31e): undefined reference to `LOG_MESSAGE'
    dtesys.c.text+0x3b4): undefined reference to `CHECK_STATUS'
    dtesys.c.text+0x3d0): undefined reference to `LOG_MESSAGE'
    /tmp/ccpZP4gG.o: In function `process':
    dtesys.c.text+0x4fe): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x837): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x948): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0xfb5): undefined reference to `WRITE_ERROR'
    /tmp/ccpZP4gG.o: In function `calc_half':
    dtesys.c.text+0x1022): undefined reference to `CAL_TO_454'
    dtesys.c.text+0x1066): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x10d4): undefined reference to `CAL_TO_454_HALF'
    dtesys.c.text+0x1118): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x1147): undefined reference to `HALF_TO_454_FDOH'
    dtesys.c.text+0x118b): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x11ed): undefined reference to `HALF_TO_454_LDOH'
    dtesys.c.text+0x1231): undefined reference to `WRITE_ERROR'
    /tmp/ccpZP4gG.o: In function `calc_month':
    dtesys.c.text+0x1304): undefined reference to `CAL_TO_454_FDOM'
    dtesys.c.text+0x1348): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x13e7): undefined reference to `CAL_TO_454_LDOM'
    dtesys.c.text+0x142b): undefined reference to `WRITE_ERROR'
    /tmp/ccpZP4gG.o: In function `calc_week':
    dtesys.c.text+0x14a7): undefined reference to `CAL_TO_454_WNO'
    dtesys.c.text+0x14eb): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x1536): undefined reference to `C454_TO_CAL'
    dtesys.c.text+0x157a): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x15f8): undefined reference to `C454_TO_CAL'
    dtesys.c.text+0x163c): undefined reference to `WRITE_ERROR'
    /tmp/ccpZP4gG.o: In function `update_unit':
    dtesys.c.text+0x193c): undefined reference to `WRITE_ERROR'
    dtesys.c.text+0x1970): undefined reference to `LOG_MESSAGE'
    dtesys.c.text+0x1994): undefined reference to `LOG_MESSAGE'

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sacan Voir le message
    Ok j'ai rajouté -L /$ORACLE_HOME/lib -lclntsh -lm ce qui donne comme commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o dtesys dtesys.c -I/apps/rms9000/rms9000_src/oracle/lib/src -I/apps/oracle/Middleware/as_1/precomp/public -I/apps/oracle/Middleware/as_1/ -I/apps/oracle/Middleware/as_1/rdbms/public -I/apps/oracle/Middleware/as_1/plsql/include -I/apps/oracle/Middleware/as_1/ohs/include  -I/usr/lib/gcc/i686-redhat-linux/4.4.4/include/ -I/usr/include/ -L /$ORACLE_HOME/lib -lclntsh -lm
    Bon, tu demandes au linkeur d'aller taper dans divers dossiers oracle pour ses librairies => ok

    Citation Envoyé par sacan Voir le message
    et maintenant voilà les erreurs: je pense qu'elles sont dû à ce que gcc n'arrive pas à trouver le fichier *.h contenant ses reference. Pourant je lui précise bien au tt début avec -I/apps/rms9000/rms9000_src/oracle/lib/src
    Est-ce que tes ".h" sont bien dans "/apps/rms9000/rms9000_src/oracle/lib/src" ? Est-ce que les ".h" qui sont dans "/apps/rms9000/rms9000_src/oracle/lib/src" sont ceux qu'il faut ???

    Accessoirement un dossier "/apps" c'est pas du standard (c'est pas interdit bien sûr mais on pourrait croire que t'as raté un embranchement dans ton chemin...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    mon fichier dtesys.c fait apppel à #include "retek.h" qui est bien situé à l'emplacement /apps/rms9000/rms9000_src/oracle/lib/src

    celui-ci fait appel à ces *.h :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <memory.h>
    #include <termio.h>
    #include <math.h>
    #include <restart.h>
    #include <std_err.h>
    #include <std_len.h>
    #include <time.h>

    Toutes ces *.h sont bien présent dans le répertoire /apps/rms9000/rms9000_src/oracle/lib/src et /usr/include.

    Voilà...

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sacan Voir le message
    mon fichier dtesys.c fait apppel à #include "retek.h" qui est bien situé à l'emplacement /apps/rms9000/rms9000_src/oracle/lib/src

    celui-ci fait appel à ces *.h :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include <memory.h>
    #include <termio.h>
    #include <math.h>
    #include <restart.h>
    #include <std_err.h>
    #include <std_len.h>
    #include <time.h>

    Toutes ces *.h sont bien présent dans le répertoire /apps/rms9000/rms9000_src/oracle/lib/src et /usr/include.

    Voilà...
    Ben là faut chercher. Par exemple chercher si "LOGON" (qui est utilisé mais introuvable) est bien présent dans tes ".h"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    Je relance ce post car on m'a demandé de retravailler dessus mais je n'y arrive toujours pas. J'ai identifié les variable qui ne sont pas défini et elles sont contenu dans un fichier oracle.pc

    Comment le mettre en .h afin qu'il puisse compiler

  8. #8
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 619
    Points : 4 350
    Points
    4 350
    Par défaut
    Citation Envoyé par sacan Voir le message
    dans un fichier oracle.pc
    .pc ou .c ?

    En fait, vu les erreurs, il trouve le .h qui va bien. Dans le .h, tu déclares juste qu'il existe un 'LOGON', mais il n'est pas défini dans le fichier de header. Bref, ce que le compilateur te reproche, c'est d'avoir dit que tu avait un 'LOGON' quelque part, mais tu ne lui as pas dit où (et donc il sait que 'LOGON' existe, mais il ne sais pas ce que c'est).

    Tu dois avoir oublié d'inclure des fichiers .c ou des dll/so à ton projet.
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    J'ai un fichier retek.h appeler par mon fichier *.c à la fin de celui-ci il y a ces lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /**********************************\
    |  Functions defined in oracle.pc  |
    \**********************************/
    extern int LOGON(int argc, char* argv[]);
    extern int WRITE_ERROR(int   err_code,
                           char* function,
                           char* table_name,
                           char* err_data);
    extern int LOG_MESSAGE(char* message_text);
    extern int CHECK_STATUS(char* ecode);
    extern int CHECK_STATUS_NO_LOG(int err_code);
    et dans le oracle.pc je trouve ces ligne pour LOGON:
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    int LOGON(int argc, char *argv[])
    {
       int lc, pc;
       char rtk_uid[50];
       char *progname = argv[0];
       char *logon = argv[1];
       char start_message[100];
       int  li_sql_trace_flag = 0;   /* 1 = TRUE, -1 = FALSE, 0 = Ignored */
       int  li_timed_stat_flag = 0;  /* 1 = TRUE, -1 = FALSE, 0 = Ignored */
       int  li_no_commit_flag = 0;   /* 1 = TRUE, 0 = FALSE */
     
       if (strrchr(progname, '/'))
          strcpy(program_name, strrchr(progname, '/') + 1);
       else
          strcpy(program_name, progname);
     
       /* Set global PROGRAM to be used for standard error processing */
       strcpy(PROGRAM, program_name);
     
       EXEC SQL CONNECT :logon;
       if (CHECK_STATUS("Logon") < 0)
          return(-1);
     
       get_option(argc, argv, "SQL_TRACE", &li_sql_trace_flag);
       get_option(argc, argv, "TIMED_STATISTICS", &li_timed_stat_flag);
       get_option(argc, argv, "NO_COMMIT", &li_no_commit_flag);
     
       if (li_sql_trace_flag == 1)
          EXEC SQL ALTER SESSION SET SQL_TRACE=TRUE;
       else if (li_sql_trace_flag == -1)
          EXEC SQL ALTER SESSION SET SQL_TRACE=FALSE;
     
       if (li_timed_stat_flag == 1)
          EXEC SQL ALTER SESSION SET TIMED_STATISTICS=TRUE;
       else if (li_timed_stat_flag == -1)
          EXEC SQL ALTER SESSION SET TIMED_STATISTICS=TRUE;
     
       if (li_no_commit_flag == 1)
          gi_no_commit = 1;
       else
          gi_no_commit = 0;
     
       rtk_uid[0] = '\0';
       /* parse the username out of the connect string. */
       for (lc = 0, pc = 0;;lc++)
       {
          if (logon[lc] == '\0') break;
          if (logon[lc] == '/') break;
          rtk_uid[pc++] = logon[lc];
       }
       rtk_uid[pc] = '\0';
       /*
        * If the database is set up to accept externally defined users (a.k.a. OPS$
        * users), then the login string will just be "/", so there won't be a
        * username.
        */
       if(rtk_uid[0] == '\0')
          strcpy(rtk_uid, "default user");
       sprintf(start_message, "Started by %s", rtk_uid);
     
       if (li_sql_trace_flag == 1)
          strcat(start_message, ", SQL_TRACE=TRUE");
       else if (li_sql_trace_flag == -1)
          strcat(start_message, ", SQL_TRACE=FALSE");
       if (li_timed_stat_flag == 1)
          strcat(start_message, ", TIMED_STATISTICS=TRUE");
       else if (li_timed_stat_flag == -1)
          strcat(start_message, ", TIMED_STATISTICS=FALSE");
       if (li_no_commit_flag == 1)
          strcat(start_message, ", NO_COMMIT=TRUE");
     
       LOG_MESSAGE(start_message);
     
       /* Set NLS number format to avoid conflicts. */
       EXEC SQL ALTER SESSION SET NLS_NUMERIC_CHARACTERS = '.,';
       if(CHECK_STATUS("Set NLS_NUMERIC_CHARACTERS") < 0) return(-1);
     
       /* Set NLS date format to Retek standard */
       EXEC SQL ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD';
       if(CHECK_STATUS("Set NLS_DATE_FORMAT") < 0) return(-1);
     
       return(0);
    }
    Que dois-je faire car je n'arrive pas trouver de fichier *.h définissant par exemple la variable LOGON et je viens de faire un grep sur l'ensemble des fichier *.pc à compiler et il contienne tous l'appel à retek.h et au variable LOGON

  10. #10
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 619
    Points : 4 350
    Points
    4 350
    Par défaut
    Tu as ta réponse ^^

    oracle.pc n'est pas compilé (c'est un fichier source, pas un header).
    Donc tu dois le rajouter à ta liste de fichiers source.

    Tu sembles confondre la déclaration (J'existe !) qui se fait dans les header, et la spécification (Je ressemble à ça !) qui se fait dans les fichiers source.

    Pour une compilation, il te faut les deux.
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    ok. je vais donc compiler le fichier oracle.pc et voir ce qui ce passe.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 105
    Points : 52
    Points
    52
    Par défaut
    Je pense mieux comprendre lors de ma précompilation en pro*c je dois luis spécifier le fichier oracle.pc en plus de mon fichier dtesys.pc

    J'obtiendrai donc un fichier dtesys.c correct pouvant être compiler ?

Discussions similaires

  1. Différences compilation Linux(make/gcc)/Windows(mingw)
    Par boelraty dans le forum Débuter
    Réponses: 2
    Dernier message: 28/07/2010, 09h46
  2. [linux]Pb de compilation mysql en langage C
    Par toflofr dans le forum Requêtes
    Réponses: 7
    Dernier message: 27/05/2008, 14h58
  3. compilation error
    Par lion1 dans le forum MFC
    Réponses: 6
    Dernier message: 19/10/2005, 16h56
  4. Réponses: 13
    Dernier message: 22/07/2005, 15h24
  5. Réponses: 4
    Dernier message: 27/08/2003, 21h34

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