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

Boost C++ Discussion :

BOOST sur SPARC SOLARIS


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 35
    Par défaut BOOST sur SPARC SOLARIS
    Bonjour à tous,

    J'ai une incertitude concernant le fait de compiler BOOST sur une architecture SPARC.
    Bien évidement, comme tout le monde le sait l'architecture SPARC de SUN appartient à la famille des processeurs BIG INDIAN.

    Alors, ma question est la suivante :

    Es-ce que cela a un impact sur le code source ? et faut-il aménager le code source en fonction de la famille sur laquelle on compile ?

    Je n'arrive pas a linké mon programme avec libboost_regex-gcc-mt-1_33_1.so en version SPARC compilé avec cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./configure --prefix=../temp/ --with-libraries=regex
    ce qui me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -n Building Boost.Jam with toolset gcc... 
    tools/jam/src/bin.solarissparc/bjam
    -n Unicode/ICU support for Boost.Regex?... 
    not found.
    Generating Boost.Build configuration in user-config.jam...
    Generating Makefile...
    ici, on voit bien qu'il détecte bien l'environnement solaris/sparc.

    le g++ qui est dans mon PATH est en version 3.4.6 et la compilation de boost_regex se passe bien. Il me génère plein de .a et .so dont celle que j'ai mentionné au dessus.
    J'ai essayé également avec la version 1_38_0 de BOOST mais meme si il me génère 3 fois moins de .so/.a cela abouti toujours aux mêmes erreurs..

    Les erreurs :
    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
     
     
    g++ -o appli main.o post.o -L../lib -lboost_regex-gcc34-mt-1_38
    Undefined                       first referenced
     symbol                             in file
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::pbackfail(long)../lib/libboost_regex-gcc34-mt-1_38.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_destroy(std::allocator<wchar_t> const&)../lib/libboost_regex-gcc34-mt-1_38.so
    std::locale::id::_M_id() const      ../lib/libboost_regex-gcc34-mt-1_38.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(unsigned int, wchar_t, std::allocator<wchar_t> const&)../lib/libboost_regex-gcc34-mt-1_38.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::compare(wchar_t const*) const../lib/libboost_regex-gcc34-mt-1_38.so
    ...
    ...
    ...
    ....
    std::_Rb_tree_decrement(std::_Rb_tree_node_base*)../lib/libboost_regex-gcc34-mt-1_38.so
    std::basic_ios<wchar_t, std::char_traits<wchar_t> >::clear(std::_Ios_Iostate)../lib/libboost_regex-gcc34-mt-1_38.so
    std::ctype<wchar_t> const& std::use_facet<std::ctype<wchar_t> >(std::locale const&)../lib/libboost_regex-gcc34-mt-1_38.so
    ld: fatal: Symbol referencing errors. No output written to appli
    collect2: ld returned 1 exit status
    *** Error code 1
    make: Fatal error: Command failed for target `appli'
    Mon application compile et fonctionne bien dans l'environnement WINDOWS XP/cygwin x86 avec la dernière version de boost précompilé disponible (1_33_1) et également sous freeBSD boost (1_37_0) toujours x86.

    Je précise que je suis dans un environnement SOLARIS 5.8 et que je n'ai pas les droits d'installé des binaires précompilés mais si vous me dîtes que c'est le seul moyen alors...

    Voila, Merci par avance pour vos lumières.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Il ne faut pas utiliser configure/make pour compiler boost mais bjam.
    Les instructions sont données dans Getting Started on Unix Variants.

    Je pense que le toolset a utiliser devrait être 'sun' à vue de nez.

    MAT.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 35
    Par défaut
    Salut Mat,

    Le problème, c'est que je suis sur un solaris 5.8 et le seul compilateur installé et valable sur cette station est un gcc-3.4.6

    Alors j'arrive à compiler BOOST avec mais apparement il ne le fait pas comme il faut pour SOLARIS.. car au linkage ma lib a des symboles non définis..
    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
    Undefined                       first referenced
     symbol                             in file
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::pbackfail(long)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_M_destroy(std::allocator<wchar_t> const&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::locale::id::_M_id() const      ../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(unsigned int, wchar_t, std::allocator<wchar_t> const&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::compare(wchar_t const*) const../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_S_terminal../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::showmanyc()../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_mutate(unsigned int, unsigned int, unsigned int)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    vtable for std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    typeinfo for std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::uflow()../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    vtable for std::basic_istream<wchar_t, std::char_traits<wchar_t> >../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::sync()../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_S_max_size../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_S_empty_rep_storage../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::_Rb_tree_increment(std::_Rb_tree_node_base*)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::imbue(std::locale const&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_M_leak_hard()../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::numpunct<wchar_t>::id          ../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::_List_node_base::hook(std::_List_node_base*)main.o
    std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_empty_rep_storage../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::_List_node_base::unhook()      main.o
    std::basic_istream<wchar_t, std::char_traits<wchar_t> >::operator>>(int&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    __gnu_cxx::__exchange_and_add(int volatile*, int)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::overflow(long)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::underflow()../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::messages<wchar_t>::id          ../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::assign(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::xsputn(wchar_t const*, int)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_Rep::_S_create(unsigned int, unsigned int, std::allocator<char> const&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_ios<wchar_t, std::char_traits<wchar_t> >::init(std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >*)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::replace(unsigned int, unsigned int, wchar_t const*, unsigned int)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::collate<wchar_t>::id           ../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::_Rb_tree_rebalance_for_erase(std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    vtable for std::basic_ios<wchar_t, std::char_traits<wchar_t> >../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_streambuf<wchar_t, std::char_traits<wchar_t> >::xsgetn(wchar_t*, int)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::_List_node_base::transfer(std::_List_node_base*, std::_List_node_base*)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::basic_string(std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > const&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::_Rep::_S_create(unsigned int, unsigned int, std::allocator<wchar_t> const&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::_Rb_tree_decrement(std::_Rb_tree_node_base*)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::basic_ios<wchar_t, std::char_traits<wchar_t> >::clear(std::_Ios_Iostate)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    std::ctype<wchar_t> const& std::use_facet<std::ctype<wchar_t> >(std::locale const&)../lib/libboost_regex-gcc34-mt-1_38.so.1.38.0.so
    ld: fatal: Symbol referencing errors. No output written to mescouv
    collect2: ld returned 1 exit status
    *** Error code 1
    make: Fatal error: Command failed for target `mescouv'
    J'en peux plus.. HELP me..

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Tu as compilé avec bjam ?

    MAT.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 35
    Par défaut
    Oui, j'ai téléchargé l'archive de boost-jam sur sourceforge et j'ai l'ai compilé.
    Ensuite, j'ai mis l'exécutable dans mon PATH et j'ai lancé la compile de boost-1_38.
    J'ai obtenu un .so de la lib regex qui m'intéresse mais lorsque je la link dans mon appli j'ai le message d'erreur que j'ai déjà donné dans mon premier message..
    Le toolset utilisé pour compilé bjam et la libregex est un GCC-4.3.6 qui est dans mon path.. et je n'ai rien d'autre de plus récent sur ce solaris la.. le seul autre environnement de développement est un cc 2.8 qui date de 1996.. lol

    Pourquoi la lib regex se compile bien et que lorsque je la link, ld ne trouve pas tous les symbols ???

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Fais voir la ligne de commande correspondant à l'édition des liens de ton application ?
    Avec ld l'ordre des bibliothèques est important vu que les symboles sont cherchés en avançant. En gros il faut que tu aies libboost_regex avant libstd++ typiquement.

    MAT.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par Jah77 Voir le message
    Pourquoi la lib regex se compile bien et que lorsque je la link, ld ne trouve pas tous les symbols ???
    Sous Linux, l'édition des liens complète ne s'effectue qu'à la création des programmes, contrairement à Windows

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/12/2010, 12h39
  2. cross compiling host = windows / linux & target = solaris sur sparc 64
    Par indepthsight dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 07/01/2008, 21h07
  3. Installer boost sur mingw
    Par casafa dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 11/10/2006, 14h26
  4. Installation de SJSC sur Unix Solaris
    Par diamonds dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 28/09/2006, 16h28
  5. [UNIX] Installer C sous SPARC-SOLARIS
    Par Leishmaniose dans le forum Ordinateurs
    Réponses: 1
    Dernier message: 01/06/2006, 21h19

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