Créer un shell 32 bits sur une archi 64
Bonjour,
Je désire installer sous CentOS tournant en 64 bits une application Oracle en 32 bits.
Je suis tombé sur ce site http://ftp.portera.com/Linux/Oracle-...nux-x86_64.htm qui explique comment faire (modifier les flags de gcc et de ld pour créer un shell en 32 bits) mais cependant j'ai quelques soucis dans la compréhension du script qu'il fournit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
#!/bin/sh
#
# This script modifies gcc and ld and create bash32 shell
#
if [ x /usr/bin/gcc.bin ]
then
echo gcc.bin already exists. Verify that you want to move gcc into gcc.bin ,
echo remove gcc.bin, and run script again
exit 1
fi
cd /usr/bin
mv gcc gcc.bin
cat > gcc <<\EOF
#!/bin/sh
exec /usr/bin/gcc.bin $GCC_FLAGS $@
EOF
chmod a+x gcc
mv ld ld.bin
cat > ld <<\EOF
#!/bin/sh
exec /usr/bin/ld.bin $LD_FLAGS $@
EOF
cat > bash32 <<\EOF
#!/bin/sh
export GCC_FLAGS=-m32
export LD_FLAGS=-melf_i386
exec linux /bin/bash $@
EOF |
Cette version du script est pour Suse donc je me demande déjà si j'ai des modifications à faire :?
Ensuite voilà mes quelques petites questions :
1) La commande pour tester si le fichier existe :
Code:
if [ x /usr/bin/gcc.bin ]
retourne une erreur -x n'est pas reconnu comme option. J'ai également essayé -f sans succés. Existe-t-il une commande simple comme "test" pour éviter de vérifier à la main s'il existe ?
2) Que signifie le code avec en particulier l'antislash
3) Enfin, je ne comprend pas le "linux" dans
Code:
exec linux /bin/bash $@
Voilà, j'ai déjà recherché ce que je me demande dans des tutos sur les scripts shell mais sans trop de succés.
Merci pour votre aide :)