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 :

[OCILIB] Compilation sous hpux Itanium 64 bits


Sujet :

Interfaces de programmation Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 28
    Points
    28
    Par défaut [OCILIB] Compilation sous hpux Itanium 64 bits
    Bonjour,

    Je rencontre quelques difficultés pour compiler ocilib sous hpux itanium (11.23) en version 64 bits.

    A priori la variable LLONG_MAX utilisée pour détecter la longueur de big_int (dans ocilib.h) n'est pas positionnée dans tous les cas (compilation avec aCC).

    Est-ce que quelqu'un a déjà rencontré ce pb sous itanium hp?

    Je pense éventuellement modifier l'include ocilib.h en y ajoutant un test sur __ia64 mais je ne connais pas les éventuels effets de bord...

    D'avance merci.
    Franck.

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Salut,

    Tiré de la doc de aCC (http://docs.hp.com/en/7762/5991-4874...ns.htm#opt-ext)

    Si LLONG_MAX n'est toujours pas défini, alors faut modifer l'entête ocilib.h

    tu peux aussi essayer de changer le test avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #if defined(_LONGLONG) || defined(__USE_ISOC99) || defined(__GLIBC_HAVE_LONG_LONG) || defined(LLONG_MAX)
    au lieu de

    Tiens moi au courant...

    Merci

    Extensions to the Language The following option supports extensions to the C++ language.
    • -ext - Enable HP value added features.

    -ext Command-Line Option
    -ext
    When you specify -ext, you enable the following HP aC++ extensions to the C++ standard:
    • Enable 64-bit integer data type support for:
      • long long (signed 64-bit integer)
      • unsigned long long (unsigned 64-bit integer)

      Use this option to declare 64-bit integer literals and for input and output of 64-bit integers.
    • Enable #assert, #unassert preprocessor directives allowing you to set a predicate name or predicate name and token to be tested with a #if directive.

    Note: When using -ext, specify it at both compile time and link time. Example:
    aCC -ext foo.C
    This command compiles foo.C, which contains a long long declaration. #include <iostream.h>

    void main(){
    long long ll = 1;
    cout << ll << endl;
    }
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Bonjour Vincent,

    Merci pour ta réponse...
    Malheureusement, les defines cités ci-dessus ne fonctionnement pas non plus.

    Voici les différents tests que j'ai pu effectuer via le script suivant

    #!/bin/sh -e

    # piti script de test de compilation Itanium 64 bits

    CC=aCC

    echo ==========================================
    echo Tests via un exe
    echo ==========================================
    cat > main.c <<- EOCAT
    #include <stdio.h>
    int main()
    {

    #if defined(_LONGLONG) || defined(__USE_ISOC99) || defined(__GLIBC_HAVE_LONG_LONG) || defined(LLONG_MAX)
    printf("LONG LONG is on \n");
    #else
    printf("LONG LONG is off \n");
    #endif
    #if defined(__ia64)
    printf("LONG LONG ia64 is on \n");
    #else
    printf("LONG LONG ia64 is off \n");
    #endif
    printf("Sizeof long long : %d\n", (int) sizeof(long long));
    }

    EOCAT

    echo ------------------------------------------
    echo Sans option
    $CC main.c
    chatr a.out | grep ELF
    a.out

    echo ------------------------------------------
    echo option -ext
    $CC -ext main.c
    chatr a.out | grep ELF
    a.out

    echo ------------------------------------------
    echo option +DD64
    $CC +DD64 main.c
    chatr a.out | grep ELF
    a.out

    echo ------------------------------------------
    echo option +DD64 -ext
    $CC +DD64 -ext main.c
    chatr a.out | grep ELF
    a.out

    echo ==========================================
    echo Tests via une library
    echo ==========================================
    cat > main.c <<- EOCAT
    #include <stdio.h>
    extern void dotest();
    int main()
    {
    dotest();
    }
    EOCAT

    cat > dotest.c <<- EOCAT
    #include <stdio.h>

    void dotest()
    {
    #if defined(_LONGLONG) || defined(__USE_ISOC99) || defined(__GLIBC_HAVE_LONG_LONG) || defined(LLONG_MAX)
    printf("LONG LONG is on \n");
    #else
    printf("LONG LONG is off \n");
    #endif
    #if defined(__ia64)
    printf("LONG LONG ia64 is on \n");
    #else
    printf("LONG LONG ia64 is off \n");
    #endif
    printf("Sizeof long long : %d\n", (int) sizeof(long long));
    }
    EOCAT

    echo ------------------------------------------
    echo Sans option
    $CC -c main.c -o main.o
    chatr main.o | grep ELF
    $CC -b dotest.c -o libdotest.so
    chatr libdotest.so | grep ELF
    $CC main.o -o main.exe -L. -ldotest
    main.exe

    echo ------------------------------------------
    echo option -ext
    $CC -ext -c main.c -o main.o
    chatr main.o | grep ELF
    $CC -ext -b dotest.c -o libdotest.so
    chatr libdotest.so | grep ELF
    $CC -ext main.o -o main.exe -L. -ldotest
    main.exe


    echo ------------------------------------------
    echo option +DD64
    $CC +DD64 -c main.c -o main.o
    chatr main.o | grep ELF
    $CC +DD64 -b dotest.c -o libdotest.so
    chatr libdotest.so | grep ELF
    $CC +DD64 main.o -o main.exe -L. -ldotest
    main.exe

    echo ------------------------------------------
    echo option +DD64 -ext
    $CC +DD64 -ext -c main.c -o main.o
    chatr main.o | grep ELF
    $CC +DD64 -ext -b dotest.c -o libdotest.so
    chatr libdotest.so | grep ELF
    $CC +DD64 -ext main.o -o main.exe -L. -ldotest
    main.exe

    Et voici le résultat:

    ==========================================
    Tests via un exe
    ==========================================
    ------------------------------------------
    Sans option
    32-bit ELF executable
    LONG LONG is off
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option -ext
    32-bit ELF executable
    LONG LONG is off
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option +DD64
    64-bit ELF executable
    LONG LONG is off
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option +DD64 -ext
    64-bit ELF executable
    LONG LONG is off
    LONG LONG ia64 is on
    Sizeof long long : 8
    ==========================================
    Tests via une library
    ==========================================
    ------------------------------------------
    Sans option
    32-bit ELF relocatable file
    32-bit ELF shared library
    LONG LONG is off
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option -ext
    32-bit ELF relocatable file
    32-bit ELF shared library
    LONG LONG is off
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option +DD64
    64-bit ELF relocatable file
    64-bit ELF shared library
    LONG LONG is off
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option +DD64 -ext
    64-bit ELF relocatable file
    64-bit ELF shared library
    LONG LONG is off
    LONG LONG ia64 is on
    Sizeof long long : 8


    Ce que l'on peut noter :
    - Le type long long existe dans tous les cas
    - Les variables transmises ne sont pas positionnées

    A+
    Fly.

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    peux tu me transmettre le contenu du fichier d'entete limits.h de ton compilo pour que puisse voir comment trouver un test qui fonctionnne sous cette config ?

    merci
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Vincent Rogier Voir le message
    peux tu me transmettre le contenu du fichier d'entete limits.h de ton compilo pour que puisse voir comment trouver un test qui fonctionnne sous cette config ?

    merci
    Le voici

    Merci.
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    Pour HP, le test est fait sur LONG_LONG_MAX...

    Donc, si tu modifie le test de ocilib.h par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    #if defined(_LONGLONG) || defined(LONG_LONG_MAX) || defined(LLONG_MAX)
    Cela est il mieux ?

    Dis le moi pour que puisse éventuellement intégrer la modif sur le svn ?
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Vincent Rogier Voir le message
    Pour HP, le test est fait sur LONG_LONG_MAX...

    Donc, si tu modifie le test de ocilib.h par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    #if defined(_LONGLONG) || defined(LONG_LONG_MAX) || defined(LLONG_MAX)
    Cela est il mieux ?

    Dis le moi pour que puisse éventuellement intégrer la modif sur le svn ?
    Merci cela me semble parfait ...
    Voici le résultat de l'exécution du script cité dans les messages précédents:

    ==========================================
    Tests via un exe
    ==========================================
    ------------------------------------------
    Sans option
    32-bit ELF executable
    LONG LONG is on
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option -ext
    32-bit ELF executable
    LONG LONG is on
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option +DD64
    64-bit ELF executable
    LONG LONG is on
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option +DD64 -ext
    64-bit ELF executable
    LONG LONG is on
    LONG LONG ia64 is on
    Sizeof long long : 8
    ==========================================
    Tests via une library
    ==========================================
    ------------------------------------------
    Sans option
    32-bit ELF relocatable file
    32-bit ELF shared library
    LONG LONG is on
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option -ext
    32-bit ELF relocatable file
    32-bit ELF shared library
    LONG LONG is on
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option +DD64
    64-bit ELF relocatable file
    64-bit ELF shared library
    LONG LONG is on
    LONG LONG ia64 is on
    Sizeof long long : 8
    ------------------------------------------
    option +DD64 -ext
    64-bit ELF relocatable file
    64-bit ELF shared library
    LONG LONG is on
    LONG LONG ia64 is on
    Sizeof long long : 8


    Une autre question arrivera bientôt par une autre discussion

    Franck.

  8. #8
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    ok

    SVN mis à jour sur SF.NET..
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

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

Discussions similaires

  1. [Windows] Problème d'installation et de compilation sous Windows 7 64 bits
    Par tolsenator dans le forum Plateformes
    Réponses: 2
    Dernier message: 09/06/2011, 09h07
  2. Réponses: 3
    Dernier message: 09/12/2010, 00h11
  3. [OCILIB] Compilation sous VS2010
    Par cobfly dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 24/09/2010, 16h51
  4. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  5. [TP]Probleme de compilation sous TP7
    Par yffick dans le forum Turbo Pascal
    Réponses: 7
    Dernier message: 18/12/2003, 20h32

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