comment compiler mon application Qt dans mon Script "build.sh"

51 views
Skip to first unread message

XIE Enming

unread,
Sep 13, 2012, 5:22:21 PM9/13/12
to concours-li...@googlegroups.com
Bonjour à tous
                       Un peu urgent!
                       Je viens de voir l'e-mail envoyé par M.Julien Viard de Galbert.
                       Il a écrit :
Subject: Rendu concours 2012 encore un effort !
Bonjour,
Nous avons pu tester ta version précompilée mais nous n'avons pas pu compiler l'ensemble de ton rendu.
1. Ta documentation ne précise pas les dépendances nécessaires.
   Tes scripts ne vérifie pas non plus ces dépendances.
   (au minimum s'arrêter en cas d'erreur serai bien).
2. Dans le script de compilation complète rien n'est présent pour compiler l'application.
   Ton script se contente de copier des binaires déjà générée.
   Et ta doc n'explique pas du tout comment compiler l'appli non plus.
 
Le point bloquant est surtout la compilation de l'appli, car nous n'avons pas pu tester une version recompilée.
 
Nous attendons donc une nouvelle version de ton rendu corrigeant ces problèmes pour pouvoir valider la première phase.
(n'oublie pas de répondre à conc...@linuxembedded.fr).
 
Courage tu es sur la bonne voie !
 
 
 
 
 
Car j'ai généré mon binaire de l'application Qt par Qt Creator sous Ubuntu en main avec la chaine de compilation générée par Buildroot-2012.05
 
Dans ma rendu, donc j'ai mis le binaire de mon application et des codes sources, mais maintenant il veut que dans mon script "build.sh" il faut comprendre des commandes pour compiler le binaire depuis les codes sources que je joind.
 
Dans mon Qt Creator, j'avais choisi l'exécutive "qmake"  généré pour Qt-Embedded par Buildroot après "make" comme la chaine de compilation.
 
Comment je dois écrire dans le "build.sh" pour compiler le binaire de mon applicatin depuis les codes sources Qt (des fichiers .h, .cpp, etc) ?
 
Merci beaucoup!

XIE Enming

unread,
Sep 13, 2012, 5:25:28 PM9/13/12
to concours-li...@googlegroups.com
Mon "build.sh" est comme ça.
 
#!/bin/bash
 
base=$PWD
 
echo "################## BUILDING L'OUTIL FLASHIMG ##################"
cd flashimg
./autogen.sh
./configure
make
sudo make install
 
echo "################## GETTING QEMU ##################"
cd $base
git clone git://repo.or.cz/qemu/mini2440.git qemu
mkdir local
cd qemu
./configure --target-list=arm-softmmu --prefix=$base/local
make
make install
export PATH=$base/local/bin:$PATH
 
echo "################## GETTING BUILDROOT AND BUILDING ##################"
cd $base
wget http://buildroot.org/downloads/buildroot-2012.05.tar.gz
tar zxvf buildroot-2012.05.tar.gz
cd buildroot-2012.05
# Utiliser le fichier de configuration deja modifie ".config"
cp $base/.config ./.config
# Implementer le the patch pour lua-host-5.1.4
cp $base/lua/host-lua.patch ./package/lua/host-lua.patch
cd ./package/lua
patch -p1 < host-lua.patch
# Compiler
cd $base/buildroot-2012.05
make
# Ajouter mon application
cp $base/images/cle2012 ./output/target/bin/cle2012
# Ajouter les trois .so fichiers
cp $base/lib/limit_level.so ./output/target/lib/limit_level.so
cp $base/lib/mean.so ./output/target/lib/mean.so
cp $base/lib/sum.so ./output/target/lib/sum.so
# Reompiler pour juste regenerer le fichier "rootfs.jffs2"
make
 
echo "################## MAKING IMAGE (NAND.BIN) ##################"
cp ./output/images/rootfs.jffs2 $base/flashimg/rootfs.jffs2
cp ./output/images/uImage $base/flashimg/uImage
cp ./output/images/u-boot.bin $base/flashimg/u-boot.bin
cd $base/flashimg
./flashimg -s 64M -t nand -f nand.bin -p uboot.part -w boot,u-boot.bin -w kernel,uImage -w root,rootfs.jffs2 -z 512
 
echo "################## STARTING QEMU ##################"
qemu-system-arm -M mini2440 -serial stdio -mtdblock nand.bin -usbdevice mouse
 
#### Les commandes suivantes doivent etre executees dans Qemu
#   MINI2440 # nboot kernel
#   MINI2440 # setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=ttySAC0,115200 mini2440=3tb
#   MINI2440 # saveenv
#   MINI2440 # bootm
#### Le mot de passe pour buildroot login est: root
#   Welcome to Buildroot
#   buildroot login: root
#   # cle2012 -qws
 
### Les fichiers sauvegardes (chan1.pcm, chan2.pcm et cle.cfg) sont dans /home/default/

XIE Enming

unread,
Sep 14, 2012, 3:15:34 AM9/14/12
to concours-li...@googlegroups.com
Le "qmake" que je configure pour Qt Creator est:

buildroot-2012.05/output/host/usr/bin/qmake


Le tool-chain que je configure pour Qt Creator est:

buildroot-2012.05/output/host/usr/bin/arm-unknown-linux-uclibcgnueabi-gcc


Merci beaucoup!
J'ai deja change le "build.sh" pour que une fois une erreur apparait, exit le script totalement.

在 2012年9月13日星期四UTC+2下午11时22分21秒,XIE Enming写道:

XIE Enming

unread,
Sep 14, 2012, 3:40:53 AM9/14/12
to concours-li...@googlegroups.com
Je viens de reussir comment compiler par des commandes dans le "build.sh".
Quand meme, merci a tous.

在 2012年9月14日星期五UTC+2上午9时15分34秒,XIE Enming写道:

Antonio LUNA-ARRIAGA

unread,
Sep 14, 2012, 3:52:41 AM9/14/12
to concours-li...@googlegroups.com
Salut,
Si ça t'arrange mieux, tu peux utiliser  BR2_ROOTFS_POST_BUILD_SCRIPT dans buildroot comme Yargil l'a signalé dans un autre post.
Cordialement,
-Antonio
--
Antonio LUNA-ARRIAGA

AleaJactaEst

unread,
Sep 14, 2012, 3:51:54 PM9/14/12
to concours-li...@googlegroups.com
Bonjour,

L'idéal serait de mettre ton programme la chaîne Buildroot.

J'ai pris pour exemple un programme qui s'appelle "exemple" :)


  a) Création du répertoire de configuration pour buildroot
$ mkdir -p buildroot-xxxx.xx/package/exemple


  b) Créer le fichier de configuration
$ vi buildroot-xxxx.xx/package/exemple/Config.in
-----------------------------------------------------------------
config BR2_PACKAGE_EXEMPLE
        bool "EXEMPLE"
        depends on BR2_PACKAGE_LIBEINA
        help
          EXEMPLE

comment "EXEMPLE requires LIBEINA (EFL)"
        depends on !BR2_PACKAGE_LIBEINA
-----------------------------------------------------------------
Remarque : dans l'exemple ci-dessus, il y a une dépendance avec EFL.
(dans ton cas, il faut mettre une dépendance avec Qt)


  c) Créer le fichier de compilation
$ vi buildroot-xxxx.xx/package/exemple/exemple.mk
-----------------------------------------------------------------
EXEMPLE_VERSION = 0.0.1
EXEMPLE_SOURCE = exemple-$(EXEMPLE_VERSION).tar.gz
EXEMPLE_INSTALL_STAGING = YES

EXEMPLE_DEPENDENCIES = libeina

$(eval $(call AUTOTARGETS))
$(eval $(call AUTOTARGETS,host))
-----------------------------------------------------------------
Remarque :
  i) ici aussi, la dépendance avec EFL (idem que plus haut, il faut changer pour Qt)
  ii) j'ai pris l'hypothèse que ton programme est livré en version 0.0.1 (nom du fichier source : exemple-0.0.1.tar.gz)
    à changer suivant la version de ton programme


  d) Mettre dans le répertoire des livrables buildroot ton programme
$ mkdir -p buildroot-xxxx.xx/dl
$ cp /xxx/xxx/xxx/xxx/exemple-0.0.1.tar.gz buildroot-xxxx.xx/dl/exemple-0.0.1.tar.gz

Le tar doit contenir toute la chaîne de compilation (configure, make, source du programme, ...)
sinon, il faut changer la configuration exemple.mk pour définir la méthode de compilation.


  e) Ajouter dans les options de Buildroot ton nouveau package
$ vi buildroot-xxxx.xx/package/Config.in
----------------------------------------------------------
menu "exemple"
source "package/exemple/Config.in"
endmenu
----------------------------------------------------------
Remarque :
  Ajoute cette configuration juste avant la dernière ligne contenant "endmenu".
  Ton package sera sélectionnable dans Buildroot sous le menu "Package Selection for the target".


  f) Dernière étape, ajouter la compilation de ton package dans les options de buildroot
$ cd buildroot-xxxx.xx ; make menuconfig

Remarque : Il modifie la configuration de buildroot "buildroot-xxxx.xx/.config"
 

  g) Lance la compilation pour vérifier le bon fonctionnement
$ cd buildroot-xxxx.xx ; make

Remarque :
   Le binaire se trouvera dans le répertoire "/usr/bin/"
   les librairies dans le répertoire "/usr/lib/"
   les autres fichiers (configuration, image) dans le répertoire "/usr/share/exemple/"



Bonne continuation

@+
AleaJactaEst

Reply all
Reply to author
Forward
0 new messages