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

Code::Blocks Discussion :

cross compil arm(rpi3). Comment cela fonctionne?


Sujet :

Code::Blocks

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Par défaut cross compil arm(rpi3). Comment cela fonctionne?
    Bonjour,
    jusqu'à présent, je développais en C++ sous codeblocks directement sur rpi3.
    J'aimerai m'essayer à la compil croisée depuis mon pc sous linux mint (objectif de générer directement l'exécutable sur rpi à terme, via connexion ssh)
    http://rco.fr.nf/index.php/2016/06/1...aspberry-pi-2/

    J'ai installé les cross compilateurs comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo apt-get install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi
    Je lance C::B, demande un projet "arm" puisque cible arm, et là, surprise, aucun compilateur trouvé!

    Alors je crée un projet gtk+ (car j'utiliserai probablement une interface gtk dans le projet), et là, surprise, seul le compilo
    GNU GCC Compiler
    est disponible.

    Alors je crée un projet empty, et là C::B voit 16 compilo !! (dont GNU GCC Compiler for ARM )

    je ne comprends pas pourquoi les différents template de projets autorisent ou ou non l'utilisation de tel ou tel compilo?

    Je ne comprends pas non plus comment le compilo peut compiler une appli sans avoir les détails de la cible, je parle des détails de l'OS qui tourne sur cette cible. Les appli sont-elles indépendantes des OS et uniquement dépendantes de l'architecture du processeur?

    Enfin , je viens de réaliser qu'à priori, je peux compiler sur mon pc en ayant pris soin d'installer les différentes librairies nécessaires (par exemple opencv, gtk, ...) mais que du coup ces libraires n'ont pas à être nécessairement présentes sur la cible. Est-ce que je comprends juste? N'y a-t-il pas risque de manquer de dépendances pour exécuter une appli sur la cible: librairie, moteur 3D ou autre ? (je n'utilise pas de moteur 3D mais je me pose des questions.)

    Merci

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Je ne comprend pas toute tes questions notamment : " je ne comprends pas pourquoi les différents template de projets autorisent ou ou non l'utilisation de tel ou tel compilo? " , sachant que j'utilise C::B moi même pour faire de la cross compilation (je dois visé facilement 8 plate forme différente sur C::B).

    Un compilateur , traduit ton code (en C ou C++) en assembleur puis en binaire , il n'a pas besoin de connaître l'OS cible donc oui cela dépend que de l'architecture cible (que le compilo connaît).
    Pour les lib non , si tu compile avec un link de la lib opencv , il faut forcément que la lib opencv soit installé sur la cible (sinon tu peux fournir les .so avec mais bon).

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Par défaut
    Je ne comprends pas pourquoi les compilo disponibles ne sont pas les même si je demande un projet "empty", "gtk+" ou "arm" (ce que j’appelle les différents template de projets, probablement pas le bon terme). Et j'aimerai bien démarrer un nouveau projet sur base "gtk+" mais le cross compilo vers arm n'est pas "proposé" par C::B dans ce cas (uniquement GNU GCC Compiler )

    merci pour l'info de non dépendance à l'OS mais uniquement à l'architecture. Néanmoins, un exé pour windows ne sera pas exécutable sous linux, même si l s'agit du même PC, c'est à quel moment que ça devient spécifique à un OS?

    Pour les libs, peut-être qu'il n'y a pas besoin des lib sur la cible si ça avait été compilé en statique, mais visiblement pas une bonne solution (si ça inclut l'intégralité de la lib et non seulement les éléments d ela lib nécessaire, ça va donner des exécutables énormes)

  4. #4
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Ah ok , oui un projet par défaut utilise GNU GCC Compiler , mais rien ne t’empêche de le changer (via click droit + build option) , d’ailleurs je te conseille sur un même projet de créer 2 targets différent , un utilisant le GNU GCC Compiler et l'autre utilisant la version ARM.

    La différence entre un .exe Windows et Linux sont que un il n'utilise pas le même format binaire (format ELF pour Linux et le format PE pour Windows) et aussi ils n'utilisent pas les mêmes API.

    Si tu compile en statique oui , tu réduit les dépendances donc pas besoin d'avoir les libs installé , mais cela augment la taille des exécutables.

    PS: il existe aussi sur linux la version MinGW pour faire de la cross-compilation comme pour cible Windows.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 114
    Par défaut
    Hello,
    peut être que je ne m'exprime pas bien, mais j'essaie justement d'expliquer qu'à la création du projet type gtk+, lorsque je choisi le compilo, je ne parviens pas à choisir le compilo croisé arm, contrairement à quand je choisit un projet empty.

  6. #6
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Ben clik droit sur ton projet ->build option et tu change le "Selected compiler".

Discussions similaires

  1. ouinon comment cela fonctionne ?
    Par chapeau_melon dans le forum WinDev
    Réponses: 5
    Dernier message: 19/02/2008, 11h16
  2. [Free Pascal] Cross-compiling Windows -> Linux : comment faire ?
    Par zafo dans le forum Free Pascal
    Réponses: 5
    Dernier message: 01/03/2007, 12h43
  3. snprintf comment cela fonctionne?
    Par deck_bsd dans le forum C
    Réponses: 3
    Dernier message: 24/11/2006, 15h20
  4. [Berkley DB] Comment cela fonctionne ?
    Par saidus dans le forum Autres SGBD
    Réponses: 1
    Dernier message: 22/02/2006, 17h49
  5. [Caml] Du mal à comprendre comment cela fonctionne...
    Par Sir Caedes dans le forum Caml
    Réponses: 16
    Dernier message: 05/01/2006, 11h52

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