Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

J'arrive pas à comiler

8 réponses
Avatar
Gerald Rochat
Salut,

Voila j'ai voulu compiler des truc mais ça marche pas. Quand je fais
sh ./configure j'ai ça:
gg@suse:~/download/gaim-vv-1.2.0> sh ./configure
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for sed... /usr/bin/sed
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: cannot run C
compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.

Quand je ragarde dans config.log:
## ----------- ##
## Core tests. ##
## ----------- ##

configure:1602: checking build system type
configure:1620: result: i686-pc-linux-gnu
configure:1628: checking host system type
configure:1642: result: i686-pc-linux-gnu
configure:1650: checking target system type
configure:1664: result: i686-pc-linux-gnu
configure:1694: checking for a BSD-compatible install
configure:1749: result: /usr/bin/install -c
configure:1760: checking whether build environment is sane
configure:1803: result: yes
configure:1868: checking for gawk
configure:1884: found /bin/gawk
configure:1894: result: gawk
configure:1904: checking whether make sets $(MAKE)
configure:1924: result: yes
configure:2097: checking for sed
configure:2115: found /bin/sed
configure:2127: result: /bin/sed
configure:2187: checking for gcc
configure:2203: found /usr/bin/gcc
configure:2213: result: gcc
configure:2457: checking for C compiler version
configure:2460: gcc --version </dev/null >&5
gcc (GCC) 3.3.5 20050117 (prerelease) (SUSE Linux)
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:2463: $? = 0
configure:2465: gcc -v </dev/null >&5
Reading specs from /usr/lib/gcc-lib/i586-suse-linux/3.3.5/specs
Configured with: ../configure --enable-threads=posix --prefix=/usr
--with-local-prefix=/usr/local --infodir=/usr/share/info
--mandir=/usr/share/man --enable-languages=c,c++,f77,objc,java,ada
--disable-checking --libdir=/usr/lib --enable-libgcj --with-slibdir=/lib
--with-system-zlib --enable-shared --enable-__cxa_atexit i586-suse-linux
Thread model: posix
gcc version 3.3.5 20050117 (prerelease) (SUSE Linux)
configure:2468: $? = 0
configure:2470: gcc -V </dev/null >&5
gcc: `-V' option must have argument
configure:2473: $? = 1
configure:2496: checking for C compiler default output file name
configure:2499: gcc conftest.c >&5
configure:2502: $? = 0
configure:2548: result: a.out
configure:2553: checking whether the C compiler works
configure:2559: ./a.out
./configure: line 2560: ./a.out: Permission denied
configure:2562: $? = 126
configure:2571: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.

Ca vient de quoi au juste. Je débute doucement alors ne vous foutez pas de
moi. J'arrive à faire la même chose avec Ubuntu et ça marche.
--

Amicalement, Gg.

8 réponses

Avatar
Cem
Le Sun, 24 Jul 2005 13:12:27 +0200, Gerald Rochat a écrit :

Salut,
Bonjour


Voila j'ai voulu compiler des truc mais ça marche pas. Quand je fais
sh ./configure j'ai ça:
[...]

Quand je ragarde dans config.log:
[...]
./configure: line 2560: ./a.out: Permission denied


Visiblement tu n'as pas le droit d'écrire sur la lib où tu compiles.

Avatar
lhabert
Gerald Rochat :

configure:2499: gcc conftest.c >&5
configure:2502: $? = 0
configure:2548: result: a.out
configure:2553: checking whether the C compiler works
configure:2559: ./a.out
./configure: line 2560: ./a.out: Permission denied


Le script configure a écrit un programme C trivial dans le fichier
« conftest.c », et a ensuite appelé le compilateur C (gcc) dessus pour le
compiler (étonnant, non?). Apparament, la compilation a réussi, puisque le
compilateur a renvoyé 0 comme code de retour (tout programme lorsqu'il se
termine renvoie en résultat un nombre au programme qui l'a lancé, et la
convention universelle veut que quand tout s'est bien passé, l'on renvoie 0,
et, si il y a eu un problème on renvoie un entier non nul). Le compilateur
C, quand on ne lui spécifie pas un nom de fichier dans lequel mettre le
programme produit, le met dans le fichier « a.out ». Le configure essaye
donc d'exécuter le a.out produit a l'étape précédente (ligne 2559). Et là,
il se prend un permission denied. Je vois deux explications possibles :
- la permission d'exécution n'est pas activée sur le a.out (cela voudrait
dire que le compilo déconne gravement)
- le système de fichiers dans lequel tu es est monté avec l'option
« noexec », qui interdit d'exécuter des programmes situés sur lui.

Je penche plutôt pour la deuxième hypothèse. Regarde le fichier /etc/fstab
pour voir si tu as des « noexec » dedans. Si oui, enlève les, et redémarre
la machine (on devrait pouvoir s'en tirer en remontant les fs, mais c'est
plus simple de rebooter). Par exemple, pour une ligne :

/dev/hdb1 /ploum ext3 noexec,errors=remount-ro 0 0

remplace par

/dev/hdb1 /ploum ext3 errors=remount-ro 0 0

. Si tu as juste « noexec » comme option, remplace par « defaults ».

Avatar
Gerald Rochat
Salut,
Le Dimanche 24 Juillet 2005 14:01, Luc Habert écrivait:

Je penche plutôt pour la deuxième hypothèse. Regarde le fichier /etc/fstab
pour voir si tu as des « noexec » dedans. Si oui, enlève les, et redémarre
la machine (on devrait pouvoir s'en tirer en remontant les fs, mais c'est
plus simple de rebooter). Par exemple, pour une ligne :


/dev/hda6 / reiserfs acl,user_xattr 1 1
/dev/hda1 /windows/C vfat
users,gid=users,umask02,utf8=true 0 0
/dev/hda5 swap swap priB 0 0
/dev/hda7 /home reiserfs user,acl,user_xattr 1 2

Pas de noexec. le fichiers se trouve dans mon dossier perso (sur /home/gg)
--

Amicalement, Gg.

Avatar
Nicolas S.
Salut,
Le Dimanche 24 Juillet 2005 14:01, Luc Habert écrivait:


Je penche plutôt pour la deuxième hypothèse. Regarde le fichier /etc/fstab
pour voir si tu as des « noexec » dedans. Si oui, enlève les, et redémarre
la machine (on devrait pouvoir s'en tirer en remontant les fs, mais c'est
plus simple de rebooter). Par exemple, pour une ligne :



/dev/hda6 / reiserfs acl,user_xattr 1 1
/dev/hda1 /windows/C vfat
users,gid=users,umask02,utf8=true 0 0
/dev/hda5 swap swap priB 0 0
/dev/hda7 /home reiserfs user,acl,user_xattr 1 2

Pas de noexec. le fichiers se trouve dans mon dossier perso (sur /home/gg)


Il y a peut-être un problème d'accès au fichier à cause des ACL...

--
Nicolas S.


Avatar
Nicolas S.
Salut,
Le Dimanche 24 Juillet 2005 14:01, Luc Habert écrivait:


Je penche plutôt pour la deuxième hypothèse. Regarde le fichier /etc/fstab
pour voir si tu as des « noexec » dedans. Si oui, enlève les, et redémarre
la machine (on devrait pouvoir s'en tirer en remontant les fs, mais c'est
plus simple de rebooter). Par exemple, pour une ligne :



/dev/hda6 / reiserfs acl,user_xattr 1 1
/dev/hda1 /windows/C vfat
users,gid=users,umask02,utf8=true 0 0
/dev/hda5 swap swap priB 0 0
/dev/hda7 /home reiserfs user,acl,user_xattr 1 2

Pas de noexec. le fichiers se trouve dans mon dossier perso (sur /home/gg)


Il y a peut-être un problème d'exécution du fichier à cause des ACL...


--
Nicolas S.


Avatar
lhabert
Gerald Rochat :

Pas de noexec.


Certes, mais le « acl,user_xattr » doit pouvoir cacher bien des horreurs.
Pour en avoir le coeur net, crée dans le même répertoire un fichier nommé
« ploum », contenant ceci :

#!/bin/sh

echo plam

, puis lance la commande :

chmod 755 ploum

, et enfin :

./ploum

. Si ça te dit « permission denied », c'est bien un problème de
paranoification à la noix sans doute liée à « user_xattr » (mais je ne
connais pas du tout ce truc, donc je sais pas vraiment en fait).

Ah, en fait, il y a une autre possibilité. Que donne la commande « umask » ?

Avatar
Gerald Rochat
Salut,
Le Dimanche 24 Juillet 2005 15:38, Luc Habert écrivait:

./ploum


bash: ./ploum: /bin/sh: bad interpreter: Permission non accordée
si je fait sh ploum ça marche.

. Si ça te dit « permission denied », c'est bien un problème de
paranoification à la noix sans doute liée à « user_xattr » (mais je ne
connais pas du tout ce truc, donc je sais pas vraiment en fait).


et si je vire acl,user_xattr je risque quoi?
D'ailleur c'est quoi?

Ah, en fait, il y a une autre possibilité. Que donne la commande « umask »


0022
--

Amicalement, Gg.

Avatar
lhabert
Gerald Rochat :

bash: ./ploum: /bin/sh: bad interpreter: Permission non accordée


Bon, ça confirme que ce n'est pas la faute au compilateur.

si je fait sh ploum ça marche.


Normal : le système te laisse exécuter les programmes venant avec la distrib
(encore heureux).

et si je vire acl,user_xattr je risque quoi?


Je pense que ça ne peut qu'améliorer les choses. De toutes manières, tu
pourras toujours le remettre si ça casse tout.

D'ailleur c'est quoi?


Les ACL, c'est un système permettant de gérer plus finement les permissions
sur les fichiers (par exemple, de les définir utilisateur par utilisateur,
tandis que le système unix traditionel ne permet que de définir les
permissions pour le propriétaire, le groupe propriétaire, et les autres). Ça
se manipule avec « getfacl » et « setfacl ». Je suppose que l'option de
montage sert à activer les ACL.

Le « user_xattr », là, j'en sais vraiment rien, et la page de man n'explique
rien. Enfin le nom laisse subhodorer que c'est le coupable.

Ah, en fait, il y a une autre possibilité. Que donne la commande « umask »


0022


Donc c'est pas ça. Je m'étais dit que ça aurait pu être « 0122 », ce qui
aurait eu pour effet que le a.out aurait été créé sans la permission
d'exécution.