Vous pouvez savoir quelle est la version de GCC que vous poss�dez en
tapant gcc -v
lors de l'invite. C'est �galement une bonne
technique pour savoir si votre configuration est ELF ou a.out.
Sur mon syst�me, cela donne ceci :
$ gcc -v
Reading specs from /usr/lib/gcc-lib/i486-zorglub-linux/2.7.2/specs
gcc version 2.7.2
Les mots-clefs � remarquer
i486
. Cela vous indique que la version de gcc que vous utilisez
a �t� compil�e pour �tre utilis�e sur un processeur 486 --- mais vous pouvez
avoir un autre processeur comme un 386 ou un Pentium (586).
Tous ces processeurs peuvent ex�cuter le code compil� avec n'importe
quel processeur. La seule diff�rence r�side dans le fait que le
code 486 rajoute un peu de code � certains endroits pour
aller plus vite sur un 486. Cela n'a pas d'effet n�faste c�t�
performance sur un 386 mais cela rend les ex�cutables un peu plus
importants.
zorglub
. Ce n'est pas r�ellement important, et il s'agit
g�n�ralement d'un commentaire (comme slackware
or debian
)
ou m�me, cela peut-�tre vide (lorsque vous avez comme nom
de r�pertoire i486-linux
). Si vous construisez votre propre
gcc, vous pouvez fixer ce param�tre selon vos d�sirs, comme je l'ai fait.
:-)
linux
. Cela peut �tre � la place linuxelf
ou
linuxaout
et en fait, la signification varie en fonction de la
version que vous poss�dez.
linux
signifie ELF si la version est 2.7.0 ou sup�rieure, sinon,
c'est du a.out.
linuxaout
signifie a.out. Cela a �t� introduit comme
cible lorsque le format des binaires a chang� de a.out vers ELF
dans Linux. Normalement, vous ne verrez plus de
linuxaout
avec une version de gcc sup�rieure � 2.7.0.
linuxelf
est d�pass�. Il s'agit g�n�ralement de gcc version
2.6.3 configur� pour g�n�rer des ex�cutables ELF. Notez que gcc 2.6.3
est connu pour g�n�rer de nombreuses erreurs lorsqu'il produit du code
ELF --- une mise � jour est tr�s fortement recommand�e.
2.7.2
est le num�ro de la version de GCC.Donc, en r�sum�, nous poss�dons gcc 2.7.2 qui g�n�re du code ELF. Quelle surprise (NdT: En fran�ais dans le texte) !
Si vous avez install� gcc sans regarder, ou bien si vous l'avez eu � partir d'une distribution, vous pouvez avoir envie de savoir o� il se trouve dans votre arborescence. Les mots clefs permettant cela sont
/usr/lib/gcc-lib/
machine-cible/
version/
(et ses sous-r�pertoires)
est g�n�ralement l'endroit o� se trouve le plus souvent le compilateur.
Ceci inclut les ex�cutables qui r�alisent la compilation ainsi
que certaines biblioth�ques et quelques fichiers d'en-t�te.
/usr/bin/gcc
est le lanceur du compilateur ---
c'est en fait le programme que vous lancez. Il peut �tre utilis�
avec plusieurs versions de gcc lorsque vous poss�dez plusieurs r�pertoires
install�s (voir plus bas). Pour trouver la version par d�faut utilis�e,
lancez gcc -v
. Pour forcer l'utilisation d'une autre
version, lancez gcc -V
version. Par exemple,
# gcc -v
Reading specs from /usr/lib/gcc-lib/i486-zorglub-linux/2.7.2/specs
gcc version 2.7.2
# gcc -V 2.6.3 -v
Reading specs from /usr/lib/gcc-lib/i486-zorglub-linux/2.6.3/specs
gcc driver version 2.7.2 executing gcc version 2.6.3
/usr/
machine-cible/(bin|lib|include)/
.
Si vous avez install� plusieurs cibles possibles (par exemple a.out et elf,
ou bien un compilateur crois�, les biblioth�ques, les binutils
(as
, ld
, etc.) et les fichiers d'en-t�te pour
les cibles diff�rente de celle par d�faut peuvent �tre trouv�s � cet endroit.
M�me si vous n'avez qu'une seule version de gcc install�e, vous devriez
toutefois trouver � cet endroit un certain nombre de fichiers. Si ce n'est pas
la cas, regardez dans /usr/(bin|lib|include)
.
/lib/
, /usr/lib
et autres sont les r�pertoires
pour les biblioth�ques pour le syst�me initial. Vous aurez �galement besoin
du programme /lib/cpp
pour un grand nombre d'applications
(X l'utilise beaucoup) --- soit vous le copiez � partir de
/usr/lib/gcc-lib/
machine-cible/
version/
, soit vous faites pointer un lien symbolique dessus.
Si l'on excepte les fichier fichiers d'en-t�te que vous installez
dans le r�pertoire /usr/local/include
, il y a en fait
trois types de fichiers d'en-t�te :
/usr/include/
et dans ses sous-r�pertoires proviennent
du paquetage de la libc dont s'occupe H.J. Lu. Je dis bien
la "grande majorit�" car vous pouvez avoir �galement certains
fichiers provenant d'autres sources (par exemple des
biblioth�ques curses
et dbm
), ceci est d'autant plus vrai
si vous poss�dez une distribution de la libc
r�cente (o� les biblioth�ques curses et dbm ne sont pas int�gr�es).
/usr/include/linux
et /usr/include/asm
(pour les fichiers
<linux/*.h>
et <asm/*.h>
)
doivent �tre des liens symboliques vers les r�pertoires
linux/include/linux
et linux/include/asm
situ�s dans
les sources du noyau. Vous devrez installer ces sources si vous d�sirez
pouvoir d�velopper : ces sources ne sont pas utilis�s uniquement
pour compiler le noyau.
Il est probable que vous ayez besoin de lancer la commande suivante
make config
dans le r�pertoire des sources du noyau
apr�s les avoir install�s. Beaucoup de fichiers ont besoin
du fichier d'en-t�te <linux/autoconf.h>
qui n'existe pas sans cette commande. Il est � noter que dans
certaines versions du noyau, le r�pertoire asm
est en fait un lien symbolique qui n'est cr�� qu'avec l'ex�cution de
make config
.
Donc, si vous installez les sources du noyau dans le r�pertoire
/usr/src/linux
, il suffit de faire :
$ cd /usr/src/linux
$ su
# make config
[repondez aux questions. A moins que vous ne recompiliez votre
noyau, les reponses importent peu]
# cd /usr/include
# ln -s ../src/linux/include/linux .
# ln -s ../src/linux/include/asm .
<float.h>
, <limits.h>
,
<varargs.h>
, <stdarg.h>
et
<stddef.h>
changent en fonction de la version du compilateur, et
peuvent �tre trouv�s dans le r�pertoire
/usr/lib/gcc-lib/i486-box-linux/2.7.2/include/
pour la version
2.7.2
.
Nous supposons que vous avez r�cup�r� les sources de gcc, et normalement,
il vous suffit de suivre les instructions donn�es dans le fichier
INSTALL
situ� dans les sources de gcc. Ensuite, il suffit de lancer
configure --target=i486-linux --host=XXX
sur une plateforme XXX
,
puit un make
devrait compiler gcc correctement. Il est � noter
que vous aurez besoin des fichiers d'en-t�te de Linux, ainsi que les sources
de l'assembleur et du l'�diteur de liens crois�s que vous pouvez trouver
sur
ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ ou
ftp://ftp.ibp.fr/pub/linux/GCC/.
Arggg. Apparemment, cela est possible en utilisant le paquetage � emx � ou l'extension � go �. Regardez ftp://sunsite.unc.edu/pub/Linux/devel/msdos pour plus d'informations.
Je n'ai pas test� cela et je ne pense pas le faire !
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:30