Arrivé à ce point, vous pouvez, si vous le voulez, vous arrêter. Vous avez installé tout ce qui est nécessaire à la compilation et à l'exécution de programmes ELF.
Vous pourriez cependant vouloir recompiler des programmes en ELF, que ce soit par amour du travail bien fait ou pour minimiser l'usage de la mémoire. Pour la plupart des applications destinées à l'utilisateur final, c'est plutôt simple. Cependant certains paquetages se reposent trop sur le système sur lequel ils tournent et pourraient planter pour l'une ou plusieurs des raisons qui suivent:
_
; pas en ELF. Cela ne fait pas de différence à moins que vous n'intégriez des instructions assembleur écrites à la main: toutes les étiquettes de la forme _foo
doivent être traduites en foo
, ou (si vous voulez conserver la portabilité) en EXTERNAL(foo)
où EXTERNAL
est une macro qui retourne soit son argument (si __ELF__
est défini) soit _
concaténé avec son argument dans le cas contraire.
Voici maintenant deux listes: la première présente les programmes qui nécessitaient des modifications pour pouvoir être compilés sous ELF (c'est-à-dire dont vous devez obtenir une nouvelle version pour pouvoir les compiler en ELF) et la seconde comporte des programmes qui nécessitent toujours des patches extérieurs.
src/s/linux.h
dans la distribution emacs pour y ajouter la ligne #define TERMINFO
quelque part près du début. Cela n'est pas nécessaire pour la version 19.31 mais l'est pour la version XEmacs 19.13. Il semblerait que cela soit réparé dans la 19.14.
Kernel support for ELF binaries (CONFIG_BINFMT_ELF) [Y/m/n/?]
Compile kernel as ELF - if your GCC is ELF-GCC (CONFIG_KERNEL_ELF) [Y/n/?]
quand vous exécutez make config
(c'est également valable pour la plupart des noyaux de la série 1.3). Si vous utilisez encore le 1.2, veuillez consulter la liste qui suit.
cal
dans util-linux 2.2 ne fonctionne pas. Passez à
version 2.5 ou plus récent.
libXpm.so.4.5
.
Une manière simple de réparer cela est de l'éditer avec précaution avec emacs ou une autre éditeur qui prend en charge les fichiers exécutables. Cherchez l'occurrence de la chaîne libXpm.so.4.5^@
(où ^@
est un zéro ASCII --- caractère NUL)), effacez le .5
et ajoutez deux caractères de plus après le NUL pour ne pas modifier la longueur du fichier.
make-3.74
--- soit vous récupérez le code source sur un site GNU et appliquez le patch qui accompagne libc-5.3.12, soit vous récupérez l'exécutable make-3.74.gz
sur tsx-11
. Il y a un bogue dans le make de GNU qui ne se manifeste qu'avec les nouvelles versions ELF de libc --- cela vient en fait d'un bogue dans les anciennes versions de la libc de GNU, qui était aussi présent dans la libc Linux jusqu'à peu. Si vous conservez votre vieux programme make
en a.out, il continuera de fonctionner mais si vous en voulez une version ELF il vous faut le patch.
Les développeurs GNU de Make sont au courant du bogue et devraient un jour sortir une version corrigée.
cd /usr/src/linux/
, coupez le patch qui suit et mettez-le dans patch -p1
. Ou encore éditez le Makefile manuellement en utilisant ce qui suit comme guide; c'est suffisamment clair (effacez les lignes comportant un -
et rajoutez les ligne avec un +
.
diff -u linux-1.2.13/Makefile.orig linux/Makefile
--- linux-1.2.13/Makefile.orig Wed Aug 16 20:53:26 1995
+++ linux/Makefile Fri Dec 8 16:19:49 1995
@@ -12,9 +12,9 @@
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
-AS =as
-LD =ld
-HOSTCC =gcc -I$(TOPDIR)/include
-CC =gcc -D__KERNEL__ -I$(TOPDIR)/include
+AS =/usr/i486-linuxaout/bin/as
+LD =ld -m i386linux
+HOSTCC =gcc -b i486-linuxaout -I$(TOPDIR)/include
+CC =gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
MAKE =make
CPP =$(CC) -E
AR =ar
Autrement,
asm/io.h
qui est seulement détecté par gcc 2.7.2. Vous devez vous munir du patch
ftp://ftp.uk.linux.org/pub/Linux/libc/misc/io.h.