Compilation dans shell / dans commande unix
Fermé
jeanne38
Messages postés
9
Date d'inscription
lundi 13 octobre 2008
Statut
Membre
Dernière intervention
24 mars 2009
-
27 oct. 2008 à 11:30
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 28 oct. 2008 à 17:19
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 - 28 oct. 2008 à 17:19
A voir également:
- Compilation dans shell / dans commande unix
- Invite de commande - Guide
- Commande terminal mac - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Commande dism - Guide
9 réponses
(Pabix)
Messages postés
578
Date d'inscription
mercredi 18 mai 2005
Statut
Membre
Dernière intervention
27 octobre 2009
81
27 oct. 2008 à 18:56
27 oct. 2008 à 18:56
Il semblerait que ton $CC soit un répertoire et pas un programme.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 oct. 2008 à 09:27
28 oct. 2008 à 09:27
hello
supprimer > /dev/null 2>&1
pour voir les messages
que content $CC ?
supprimer > /dev/null 2>&1
pour voir les messages
que content $CC ?
J'ai ajouté des traces d'execution :
************************************************************************
CHECK_C_COMPILER () {
# compilation et execution d'un programme C minimal
TMP=test_$$
cat > /tmp/$TMP.c << \EOF
#include <stdio.h>
int main ()
{
puts ("Hello Vasy");
return 0;
}
EOF
echo "CC=$CC /tmp/$TMP.c -o /tmp/$TMP"
"$CC" /tmp/$TMP.c -o /tmp/$TMP > /dev/null 2>&1
CODE_ERREUR=$?
if [ $CODE_ERREUR -ne 0 ]
then
echo "Error code : $CODE_ERREUR"
...
************************************************************************
résultat sous linux :
CC=/opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/ /tmp/test_8116.c -o /tmp/test_8116
Error code : 127
*** ``/opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/'' failed to compile a minimal C program
==> Check that your C compiler is installed properly
Et quand je copie colle sous linux la ligne "CC=" :
> /opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/ /tmp/test_8116.c -o /tmp/test_8116
aucun message d'erreur ! la compilation s'est bien déroulée puisqu'ensuite je fais :
> /tmp/test_8116
Hello Vasy
Il m'affiche bien le résultat de mon petit programme C minimaliste.
Dans la ligne d'appel au compilteur suncc, il n'y a pas de variable qui serait propre à mon programme shell et inconnue en dehors, alors je ne vois pas où est la différence ...
************************************************************************
CHECK_C_COMPILER () {
# compilation et execution d'un programme C minimal
TMP=test_$$
cat > /tmp/$TMP.c << \EOF
#include <stdio.h>
int main ()
{
puts ("Hello Vasy");
return 0;
}
EOF
echo "CC=$CC /tmp/$TMP.c -o /tmp/$TMP"
"$CC" /tmp/$TMP.c -o /tmp/$TMP > /dev/null 2>&1
CODE_ERREUR=$?
if [ $CODE_ERREUR -ne 0 ]
then
echo "Error code : $CODE_ERREUR"
...
************************************************************************
résultat sous linux :
CC=/opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/ /tmp/test_8116.c -o /tmp/test_8116
Error code : 127
*** ``/opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/'' failed to compile a minimal C program
==> Check that your C compiler is installed properly
Et quand je copie colle sous linux la ligne "CC=" :
> /opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/ /tmp/test_8116.c -o /tmp/test_8116
aucun message d'erreur ! la compilation s'est bien déroulée puisqu'ensuite je fais :
> /tmp/test_8116
Hello Vasy
Il m'affiche bien le résultat de mon petit programme C minimaliste.
Dans la ligne d'appel au compilteur suncc, il n'y a pas de variable qui serait propre à mon programme shell et inconnue en dehors, alors je ne vois pas où est la différence ...
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 oct. 2008 à 15:23
28 oct. 2008 à 15:23
ces messages d'erreurs c'est toi qui les affiche
après ta compile en ligne que répond
echo $?
après ta compile en ligne que répond
echo $?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
> /opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/ /tmp/test_8116.c -o /tmp/test_8116
> echo $?
0
J'ai fait afficher $? pour savoir quel était le code d'erreur, mais ça ne m'avance pas plus finalement ...
> echo $?
0
J'ai fait afficher $? pour savoir quel était le code d'erreur, mais ça ne m'avance pas plus finalement ...
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 oct. 2008 à 15:54
28 oct. 2008 à 15:54
"$CC" /tmp/$TMP.c -o /tmp/$TMP > /dev/null 2>&1 CODE_ERREUR=$? if [ $CODE_ERREUR -ne 0 ] then echo "Error code : $CODE_ERREUR"
enlève tout sauf $CC /tmp/$TMP.c -o /tmp/$TMP
Bonjour,
j'ai mis tout ce que tu me disais en commentaires, en laissant la suite de l'execution "normale" :
(j'ai enlevé aussi la variable CODE_ERREUR)
**********************************************************************************************************
echo "CC=$CC /tmp/$TMP.c -o /tmp/$TMP"
# "$CC" $TMP.c -o $TMP > /dev/null 2>&1
"$CC" /tmp/$TMP.c -o /tmp/$TMP > /dev/null 2>&1
# if [ $? -ne 0 ]
# then
# echo "*** \`\`$CC'' failed to compile a minimal C program"
# echo "==> Check that your C compiler is installed properly"
# else
test "`./$TMP 2>/dev/null`" = "Hello Vasy"
RESULT=$?
if [ $RESULT -ne 0 ]
then
echo "*** A minimal C program compiled using \`\`$CC'' did not execute properly"
if [ \( "$ARCH" = "iX86" -o "$ARCH" = "x64" -o "$ARCH" = "ia64" \) -a "`basename "$CC"`" = "icc" ]
then
# cas du compilateur icc pour Linux pour lequel
# $LD_LIBRARY_PATH doit etre positionnee pour
# executer les binaires produits par icc avec
# edition dynamique de liens
echo "==> Set variable \`\`\$LD_LIBRARY_PATH'' to access the Intel CC runtime library"
echo " (e.g., `dirname $CC`/../lib)"
else
echo "==> Check that your C compiler is installed properly"
fi
fi
# fi
# rm -f $TMP.c $TMP $TMP.exe
Sans surprise, ça plante lors de : test "`./$TMP 2>/dev/null`" = "Hello Vasy"
Mêmes messages d'erreur, sauf que cette fois ce n'est pas à la compilation qu'il rale mais à l'execution (le programme n'existe pas, puisqu'il n'a pas pu être compilé)
CC=/opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/ /tmp/test_9401.c -o /tmp/test_9401
*** A minimal C program compiled using ``/opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/'' did not execute properly
==> Check that your C compiler is installed properly
Pfouuuu c'est déprimant ...
j'ai mis tout ce que tu me disais en commentaires, en laissant la suite de l'execution "normale" :
(j'ai enlevé aussi la variable CODE_ERREUR)
**********************************************************************************************************
echo "CC=$CC /tmp/$TMP.c -o /tmp/$TMP"
# "$CC" $TMP.c -o $TMP > /dev/null 2>&1
"$CC" /tmp/$TMP.c -o /tmp/$TMP > /dev/null 2>&1
# if [ $? -ne 0 ]
# then
# echo "*** \`\`$CC'' failed to compile a minimal C program"
# echo "==> Check that your C compiler is installed properly"
# else
test "`./$TMP 2>/dev/null`" = "Hello Vasy"
RESULT=$?
if [ $RESULT -ne 0 ]
then
echo "*** A minimal C program compiled using \`\`$CC'' did not execute properly"
if [ \( "$ARCH" = "iX86" -o "$ARCH" = "x64" -o "$ARCH" = "ia64" \) -a "`basename "$CC"`" = "icc" ]
then
# cas du compilateur icc pour Linux pour lequel
# $LD_LIBRARY_PATH doit etre positionnee pour
# executer les binaires produits par icc avec
# edition dynamique de liens
echo "==> Set variable \`\`\$LD_LIBRARY_PATH'' to access the Intel CC runtime library"
echo " (e.g., `dirname $CC`/../lib)"
else
echo "==> Check that your C compiler is installed properly"
fi
fi
# fi
# rm -f $TMP.c $TMP $TMP.exe
Sans surprise, ça plante lors de : test "`./$TMP 2>/dev/null`" = "Hello Vasy"
Mêmes messages d'erreur, sauf que cette fois ce n'est pas à la compilation qu'il rale mais à l'execution (le programme n'existe pas, puisqu'il n'a pas pu être compilé)
CC=/opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/ /tmp/test_9401.c -o /tmp/test_9401
*** A minimal C program compiled using ``/opt/sun/sunstudio12/bin/suncc -lgcc -L/usr/lib/gcc/i486-linux-gnu/4.1.2/'' did not execute properly
==> Check that your C compiler is installed properly
Pfouuuu c'est déprimant ...
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 oct. 2008 à 16:24
28 oct. 2008 à 16:24
NNOONN
"$CC" /tmp/$TMP.c -o /tmp/$TMP enlève ça : > /dev/null 2>&1
"$CC" /tmp/$TMP.c -o /tmp/$TMP enlève ça : > /dev/null 2>&1
oups pardon ! :-)
ok je l'ai enlevé
je me retrouve avec uniquement : $CC /tmp/$TMP.c -o $TMP
et ça marche !!
Merci dubcek pour ton aide précieuse !! :-)))
ok je l'ai enlevé
je me retrouve avec uniquement : $CC /tmp/$TMP.c -o $TMP
et ça marche !!
Merci dubcek pour ton aide précieuse !! :-)))
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
28 oct. 2008 à 16:32
28 oct. 2008 à 16:32
bizarre parce ce sont juste des redirections !! tu as enlevé les guillemets autour de $CC ?
jeanne38
>
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
28 oct. 2008 à 16:54
28 oct. 2008 à 16:54
Oui j'ai noté :
$CC /tmp/$TMP.c -o $TMP
J'ai enlevé les " " autour de $CC : lorsque je les remets "$CC" ça merdoit à nouveau ...
Tu penses que ce n'est pas bon comme ça ?
$CC /tmp/$TMP.c -o $TMP
J'ai enlevé les " " autour de $CC : lorsque je les remets "$CC" ça merdoit à nouveau ...
Tu penses que ce n'est pas bon comme ça ?
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
>
jeanne38
28 oct. 2008 à 17:19
28 oct. 2008 à 17:19
si si mais je ne pense pas que ce soit le fait d'enlever les redirections qui a résolu le problème, donc peut-être les "