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'optionde gcc pour compiler vers du x86.
Code : Sélectionner tout - Visualiser dans une fenêtre à part -m32
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 :
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.undefined reference to `__udivdi3'
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![]()
Partager