Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 08-02-2014 23:48:25

zodd
Membre
Distrib. : Debian Wheezy, Ubuntu Precise
Noyau : 3.4.61 sunxi "custom", 3.8.0-32-generic
(G)UI : xfwm4, openBox, Compiz
Inscription : 19-12-2013

Comment cross compiler Qt pour du ARM

Bonjour,

Pour ceux qui ne connaissent pas Qt , il s'agit d'un framework C++ très complet. On appelle cela aussi un SDK.

Je développe un peu avec Qt et j'aimerai porter les développement sur des cibles ARM telle que la Beaglebone Black par exemple. (c'est une espèce de Raspberry PI)
Mais comme ces petites machines ne sont pas très "confortables" pour développer, je souhaite utiliser a cross compilation pour développer sur mon PC et compiler pour ma carte ayant un processeur ARM.

Malheureusement cela ne semble pas si évident que cela.... et je rencontre certaines difficultés....donc pour commencer, voilà où j'en suis:

j'ai téléchargé le sdk Qt:
http://download.qt-project.org/official … 8.5.tar.gz

que j'ai décompressé dans mon répertoire personnel...

puis j'ai téléchargé ce compilateur pour arm comme ceci:


wget -c [url]https://launchpad.net/linaro-toolchain-binaries/trunk/2013.10/+download/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz[/url]
tar xJf gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz

 



mon compilateur a l'air ok:


~/Téléchargements/qt-everywhere-opensource-src-4.8.5$ /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-gcc --version
arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.8-2013.10 - Linaro GCC 2013.10) 4.8.2 20131014 (prerelease)
Copyright © 2013 Free Software Foundation, Inc.
Ce logiciel est libre; voir les sources pour les conditions de copie.  Il n'y a PAS
GARANTIE; ni implicite pour le MARCHANDAGE ou pour un BUT PARTICULIER.
 



ensuite j'ai du faire plusieurs choses.. déjà mettre à jour le fichier qmake.conf du sdk  relatif à ma cible comme ceci:



~/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-gnueabi-g++$ cat qmake.conf
#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                = /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-gcc
QMAKE_CXX               = /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++
QMAKE_LINK              = /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-objcopy
QMAKE_STRIP             = /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-strip

load(qt_config)

 



ensuite j'ai fait ce ./configure:


./configure -opensource -confirm-license -prefix /usr/local/Qt-4.8.5-arm -embedded arm -little-endian -no-pch -xplatform qws/linux-arm-gnueabi-g++
 



Puis


make ARCH=arm CROSS_COMPILE=/home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-
sudo make install

 



A ce stade je suis sensé avoir mon SDK compilé pour du arm dans le répertoire /usr/local/Qt-4.8.5-arm

ensuite dans qtcreator  (l'IDE en général utilisé avec Qt) j'ai sélectionné le bon qmake dans /usr/local/Qt-4.8.5-arm/bin et le bon compilateur /home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf-g++

Dans la partie projet j'ai ajouté ces arguments:
-spec linux-arm-gnueabi-g++  pour qmake
ARCH=arm CROSS_COMPILE=/home/franck/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/arm-linux-gnueabihf- pour make


là qmake fonctionne et make créé bien mon fichier exécutable...^^

Edit pour mise à jour.. la chaîne de cross compilation fonctionne^^

Dernière modification par zodd (10-02-2014 23:42:16)

Hors ligne

#2 10-02-2014 17:17:14

zodd
Membre
Distrib. : Debian Wheezy, Ubuntu Precise
Noyau : 3.4.61 sunxi "custom", 3.8.0-32-generic
(G)UI : xfwm4, openBox, Compiz
Inscription : 19-12-2013

Re : Comment cross compiler Qt pour du ARM

salut,

donc j'ai refait la manip'  ..  j'ai édité le post précédent car il y a avait une erreur.. j'ai une compilation désormais sans erreur.. et le "résultat" suivant:

file monbinaire
monbinaire: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.1.1, BuildID[sha1]=0x01cb0911d7837bff0e05fd6d3870ae3547815738, not stripped



Donc ça a l'air pas mal.. je teste ça dès que j'ai accès à ma cible ^^ (en espérant pouvoir enlever le message d'erreur du post précédent ^^)

Edit: voilà c'est testé et comme dis au dessus l'exécutable se lance..^^

Dernière modification par zodd (10-02-2014 23:42:54)

Hors ligne

#3 17-02-2014 10:02:49

lebreton22
Membre
Inscription : 17-02-2014

Re : Comment cross compiler Qt pour du ARM

Bonjour
Je tente d'installer open-sankoré sur mon raspberry. N'y connaissant rien, est-ce que la démarche ci-dessus est possible (les sources sont disponibles ici : https://github.com/Sankore/Sankore-3.1 )
mais je ne vois pas la procédure.
Merci de votre aide
lebreton22

Hors ligne

#4 17-02-2014 10:10:12

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : Comment cross compiler Qt pour du ARM

Salut lebreton,

    Attention, un problème, un utilisateur, un sujet à part!
    Merci de créer un nouveau sujet pour exposer ton prèblème.
    Voir le tuto : On ne bernacle pas le post d'autrui. Plop !

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#5 17-02-2014 11:03:52

lebreton22
Membre
Inscription : 17-02-2014

Re : Comment cross compiler Qt pour du ARM

je ne pensais pas être hors jeu en posant une question qui allait en complément de la démarche proposée par Zodd
lebreton22

Hors ligne

#6 17-02-2014 11:36:21

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : Comment cross compiler Qt pour du ARM

Le thème était le même, mais c'est de la bernacle quand même smile
Chacun son post. Si tu as la même question qu'un membre, tu la reposes dans un autre fil quand même. C'est la règle sur ce forum.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#7 17-02-2014 12:15:50

lebreton22
Membre
Inscription : 17-02-2014

Re : Comment cross compiler Qt pour du ARM

(re)
Je vais essayer de rester dans le sujet :
Pour faire le ./configure cité plus haut

./configure -opensource -confirm-license -prefix /usr/local/Qt-4.8.5-arm -embedded arm -little-endian -no-pch -xplatform qws/linux-arm-gnueabi-g++

, ce n'est pas clair pour moi (très débutant).
Serait-il possible d'avoir des explications ?
Merci beaucoup

Hors ligne

#8 17-02-2014 12:22:24

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : Comment cross compiler Qt pour du ARM

Tu es hors sujet puisque tu parles de ton problème.
Crée ta propre discussion s'il te plaît.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#9 19-02-2014 12:18:37

jacques35700
Membre
Inscription : 19-02-2014

Re : Comment cross compiler Qt pour du ARM

Bonjour ;

La compilation à l'air de se faire correctement smile Hélas, lorsque je teste l'exécutable sur le Pi, j'obtiens : Erreur de segmentation sad

file test : test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.1.1, BuildID[sha1]=0x1d2c77cf2d8f5f3db041071ecd3a99062b362fa3, not stripped

Une petite idée ?

Merci

Hors ligne

Pied de page des forums