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

Embarqué Discussion :

Compiler pour une machine x86 depuis une x64_86


Sujet :

Embarqué

  1. #1
    Membre averti Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    Points : 395
    Points
    395
    Par défaut Compiler pour une machine x86 depuis une x64_86
    Bonsoir ^^

    J'ai pas beaucoup d'expérience en cross-compilation et du coup je me permet de quémander votre aide sur une question que je n'arrive pas à résoudre. J'essaie de compiler un projet utilisant une librairie compilée pour une architecture x86, il s'agit du Vortex86DX. Ma machine tourne avec un Core i7.

    J'ai écrit mon code C avec Code::Blocks donc j'ai ajouté les répertoires /include et /lib de ma libraire, la RoBoIO. Là j'ai pris directement les binaires disponibles pour ma distribution (Ubuntu) compilée pour x86 mais si je compile directement depuis les sources pour x86 j'ai le même souci.

    En revanche si je compile la librairie et mon code pour x64_86 tout fonctionne parfaitement... mais ce n'est pas ce que je veux faire.

    Que j'utilise le .a ou que je compile l'ensemble des sources moi-même, j'utilise l'option de gcc pour compiler vers du x86.

    Donc si on prend le cas actuel, j'ai pris les binaires de la librairie déjà compilés pour x86 et je compile l'ensemble du projet pour x86. Le compilateur me dit alors :

    undefined reference to `__udivdi3'
    L'erreur est rattachée à du code de la librairie dans le fichier common.cpp. En cherchant sur le web, je suis tombé sur des articles qui parlent du fait que le code effectue des divisions sur 64 bits et que donc on ne peut pas le compiler comme du code 32 bits. Je suis étonné de ça puisque cette librairie est conçue spécifiquement pour la carte équipée du Vortex86DX cible.

    Si je ne compile pas le projet avec l'option -m32, j'ai la même erreur. L'erreur n’apparaît que lors de la compilation du projet. Si je compile uniquement le code de la librairie avec l'option -m32, ce que j'ai signalé plus haut, tout fonctionne très bien.

    J'ai déjà installé le package libc6-i386.

    Est-ce que vous auriez une idée pour résoudre ce souci ?

    Merci d'avance

  2. #2
    Membre averti Avatar de RPGamer
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Mars 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués

    Informations forums :
    Inscription : Mars 2010
    Messages : 168
    Points : 395
    Points
    395
    Par défaut
    C'est bon, j'ai finalement trouvé. J'avais mis l'option -m32 pour le compilateur mais pas pour le linker. En ajoutant cette option sur le linker ça compile parfaitement.

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

Discussions similaires

  1. Affichage d'une liste externe depuis une machine distante.
    Par cleml12 dans le forum Configuration
    Réponses: 0
    Dernier message: 14/12/2011, 11h28
  2. Réponses: 5
    Dernier message: 29/01/2010, 20h31
  3. Réponses: 16
    Dernier message: 11/09/2008, 09h39
  4. Réponses: 6
    Dernier message: 20/07/2007, 15h17

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