Outils pour utilisateurs

Outils du site


dev:outils:crosstool

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
dev:outils:crosstool [2012/12/31 13:39] rootdev:outils:crosstool [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1
Ligne 42: Ligne 42:
    * Un esemble d'appels commentés permettant la compilation de la chaine en utilisant des versions compatibles connues de gcc et de libc. Une seule est décommentée permettant de générer par défaut une chaine de compilation croisée avec gcc-4.1.0 et glibc 2.3.2-lts.    * Un esemble d'appels commentés permettant la compilation de la chaine en utilisant des versions compatibles connues de gcc et de libc. Une seule est décommentée permettant de générer par défaut une chaine de compilation croisée avec gcc-4.1.0 et glibc 2.3.2-lts.
  
-==== Création du fichier de configuration my-demo-arm.sh ====+==== Modification du script demo-arm.sh ====
 Ici, on crée une copie du fichier de demo que l'on va légèrement modifier. Ici, on crée une copie du fichier de demo que l'on va légèrement modifier.
  
Ligne 92: Ligne 92:
 ==== Création du fichier my-arm.dat ==== ==== Création du fichier my-arm.dat ====
  
 +Le script générant notre chaine de compilation s'appuie sur le fichier my-arm.dat pour déterminier la configuration du noyau de la cible. Ce fichier n'existe pas encore, Créons le à partir du fichier existant arm.dat:
 +
 +<code bash>
 +yoann@hermes:/opt/crosstool-0.43$ cp arm.dat my-arm.dat
 +yoann@hermes:/opt/crosstool-0.43$ vi my-arm.dat
 +</code>
 +
 +Ici, on s'aperçoie que le fichier de configuration du noyau utilisé est le fichier arm.config. On peut modifier la varible TARGET afin de l'adapter à sa cible.
 +
 +<file>
 +KERNELCONFIG=`pwd`/arm.config
 +TARGET=arm-crosstool-test-linux-gnu
 +TARGET_CFLAGS="-O"
 +</file>
 +
 +==== Lancer la compilation ====
 +
 +Lancer la compilation de notre chaine en executant le script **my-demo-arm.sh**.
 +
 +<code bash>
 +yoann@hermes:/opt/crosstool-0.43$ ./my-demo-arm.sh
 +</code>
 +
 +=== 1iere tentative ===
 +
 +La premiere tentative est abordée, le message suivant est affiché:
 +
 +<file>
 +No such file `gdb-6.5.tar.bz2'.
 +
 ++ test -f /home/yoann/downloads/gdb-6.5.tar.bz2
 ++ abort file gdb-6.5.tar.bz2 not found
 ++ echo file gdb-6.5.tar.bz2 not found
 +file gdb-6.5.tar.bz2 not found
 ++ exec false
 +</file>
 +
 +Le fichier gdb-6.5.tar;bz2 est introuvable. En remontant les logs, on peut voir que le script le cherche en priorité dans le dossier ''**./old-releases/**'' du ftp de redhat. J'explore le ftp à l'aide de ncftp.
 +
 +<code bash>
 +yoann@hermes:/opt/crosstool-0.43$ ncftp ftp://sources.redhat.com/pub/gdb/old-releases/
 +...                                          
 +Current remote directory is /pub/gdb/old-releases.
 +ncftp /pub/gdb/old-releases > ls gdb-6.5*
 +gdb-6.5a.tar.bz2    gdb-6.5a.tar.gz
 +ncftp /pub/gdb/old-releases >
 +</code>
 +
 +Une archive gdb-6.5a.tar.bz2 existe, on modifie le fichier pour lui donner cette version de GDB.
 +
 +=== 2<sup>ième</sup> tentative ===
 +A l'etape de compilation de la glibc
 +
 +<file>
 +checking for arm-unknown-linux-gnu-gcc... gcc
 +checking version of gcc... 4.4.3, bad
 +checking for gnumake... no
 +checking for gmake... no
 +checking for make... make
 +checking version of make... 3.81, ok
 +configure: error:
 +*** These critical programs are missing or too old: gcc
 +*** Check the INSTALL file for required versions.
 +yoann@hermes:/opt/crosstool-0.43$
 +</file>
 +La vérification de la version de gcc échoue. Un patch permet de modifier ce comportement. Il est fournit dans les ressources additionnelles de l'ouvrage Linux embarqué disponible à l'adresse http://www.editions-eyrolles.com/download/9782212124521/ZeBook3_ex.tgz. Télécharger l'archive, extraire le patch et copier le fichier patch dans l'arborescence de crosstool pour qu'il puisse t'être appliqué.
 +
 +<code bash>
 +yoann@hermes:/tmp$ wget http://www.editions-eyrolles.com/download/9782212124521/ZeBook3_ex.tgz
 +yoann@hermes:/tmp$ tar xf ZeBook3_ex.tgz
 +yoann@hermes:/tmp$ cd ZeBook3/exemples/chap5/configs/
 +yoann@hermes:/tmp/ZeBook3/exemples/chap5/configs$ cp patches/glibc-2.3.2/glibc-2.3.3-allow-gcc-4.4-configure.patch /opt/crosstool-0.43/patches/glibc-2.3.2/
 +</code>
 +
 +Le contenu du patch est donné ci-dessous
 +<file glibc-2.3.3-allow-gcc-4.4-configure.patch>
 +*** glibc-2.3.2/configure.old   2009-12-24 18:09:29.050226966 +0100
 +--- glibc-2.3.2/configure       2009-12-24 18:10:01.458225422 +0100
 +***************
 +*** 2272,2278 ****
 +    ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
 +    case $ac_prog_version in
 +      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
 +!     3.[2-9]*|4.[01]*)
 +         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
 +      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
 +  
 +--- 2272,2278 ----
 +    ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'`
 +    case $ac_prog_version in
 +      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
 +!     3.[2-9]*|4.[01234]*)
 +         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
 +      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
 +
 +</file>
 +
 +Remarque: Pour que les patch soient appliqués automatiquement par crosstool, ils doivent se trouver sous le répertoire ./patchs de l'outil et leur nom doit contenir la chaine patch ou le suffixe .diff
  
 ===== Sources ===== ===== Sources =====
dev/outils/crosstool.1356961141.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)