OVH Cloud OVH Cloud

Gentoo et warning

51 réponses
Avatar
Jerome Lambert
(C'est limite débats, mais je préfère d'abord une réponse *technique*)

Bonsoir,

Coutumier des distributions binaires, je me suis attelé ce week-end à
l'installation d'une Gentoo 2004.3.

Avec le manuel, tout s'est bien passé (pas loin de 50h de compilation
sur un P-3 450), mais j'ai été stupéfait par ... le nombre de warning
lors de la compilation.

Est-ce normal, et ont-ils une incidence sur le bon fonctionnement des
programmes? Je pense notamment aux avertissements concernant une
comparaison entre pointeur et entier sans cast de celui-ci, ce qui, si
mes souvenirs sont bons, n'est pas une manière "propre" de travailler,
ou encore aux messages avertissant de l'utilisation de variable non
initialisées.

J'ai un peu d'expérience en programmation, et je me souviens que c'était
le genre de messages qui faisait sauter mon prof au plafond, d'où mon
inquiétude.

Merci de vos éclaircissements,

Jérôme.

10 réponses

1 2 3 4 5
Avatar
no_spam
On Sun, 21 Nov 2004 22:42:03 +0100, Jerome Lambert wrote:

(C'est limite débats, mais je préfère d'abord une réponse *technique*)

Bonsoir,

Coutumier des distributions binaires, je me suis attelé ce week-end à
l'installation d'une Gentoo 2004.3.


Enfin un courageux ;-)

Avec le manuel, tout s'est bien passé (pas loin de 50h de compilation
sur un P-3 450), mais j'ai été stupéfait par ... le nombre de warning
lors de la compilation.

Est-ce normal, et ont-ils une incidence sur le bon fonctionnement des
programmes? Je pense notamment aux avertissements concernant une
comparaison entre pointeur et entier sans cast de celui-ci, ce qui, si
mes souvenirs sont bons, n'est pas une manière "propre" de travailler,
ou encore aux messages avertissant de l'utilisation de variable non
initialisées.


Ce genre de warning n'est pas très grave sur un P-III puisque la taille
des entiers est la même que celle d'une addresse (32 bits). Par contre,
c'est catastrophique sur un CPU 64 bits, puisque un cast d'un pointeur de
64 bits dans un entier de 32 bits fait perdre un peu d'information...
Sauf si le cast est en long, bien sur...

J'ai un peu d'expérience en programmation, et je me souviens que c'était
le genre de messages qui faisait sauter mon prof au plafond, d'où mon
inquiétude.


C'est toujours pareil, il y a warning et warning.
Certaines dénotent des bugs de façon quasi certaines du genre: "variable
xxx may be used uninitialized", les problèmes de shadowing et d'aliasing,
..., certaines sont des erreurs de style pouvant éventuellement entrainer
des bugs et certaines sont anodines.
L'idéal étant de toujours compiler avec les flags -Wall -W -Werror (ce
qu'on fait au boulot pout les softs de prod, par ex), mais il y a assez
peu de softs qui compilent dans ces conditions...

Sur la Gentoo, tu peux activer "FEATURES=maketest" pour les packages qui
semblent être buggés. Tu verras que certains le sont effectivement.
L'inconvénient de cette méthode est que tu vas multiplier par dix le
temps d'installation de certains packages (il vaut mieux le savoir avant !).

Avatar
Christophe PEREZ
Le Sun, 21 Nov 2004 22:42:03 +0100, Jerome Lambert a écrit:

Merci de vos éclaircissements,


Monsieur TiChou est demandé ici pour vendre sa soupe ! :-))))

--
Christophe PEREZ
Écrivez moi sans _faute !

Avatar
Jerome Lambert
no_spam wrote:
On Sun, 21 Nov 2004 22:42:03 +0100, Jerome Lambert wrote:


(C'est limite débats, mais je préfère d'abord une réponse *technique*)

Bonsoir,

Coutumier des distributions binaires, je me suis attelé ce week-end à
l'installation d'une Gentoo 2004.3.



Enfin un courageux ;-)


Bah, la documentation est excellente, et si on l'applique point par
point on arrive facilement à un résultat qui en vaut *vraiment* la
peine. ;-)

En effet, c'est assez stupéfiant d'avoir un P-III 450/128Mo à peine
moins réactif qu'un Athlon64 3000+/1Go, le premier avec une Gentoo, le
second avec une Fedora Core 3 Amd64. (Faut dire aussi que vu la faible
quantité de ram, j'ai placé l'option Os dans make.conf, et kernel + X +
Gnome 2.8 me consomme alors royalement 50Mo de ram!!!)

Avec le manuel, tout s'est bien passé (pas loin de 50h de compilation
sur un P-3 450), mais j'ai été stupéfait par ... le nombre de warning
lors de la compilation.

Est-ce normal, et ont-ils une incidence sur le bon fonctionnement des
programmes? Je pense notamment aux avertissements concernant une
comparaison entre pointeur et entier sans cast de celui-ci, ce qui, si
mes souvenirs sont bons, n'est pas une manière "propre" de travailler,
ou encore aux messages avertissant de l'utilisation de variable non
initialisées.


Ce genre de warning n'est pas très grave sur un P-III puisque la taille
des entiers est la même que celle d'une addresse (32 bits). Par contre,
c'est catastrophique sur un CPU 64 bits, puisque un cast d'un pointeur de
64 bits dans un entier de 32 bits fait perdre un peu d'information...
Sauf si le cast est en long, bien sur...


Ah. OK. Merci.

Mais ça soulève un autre problème: vu le résultat auquel je suis
parvenu, je suis tenté d'installer la version 2004.3 pour Amd64 sur mon
portable Amd64.

J'ai lu les releases notes pour l'Amd64, qui semblent encouragentes. Je
suppose que les paquets intégrés à l'arbre Amd64 sont vérifiés...

J'ai un peu d'expérience en programmation, et je me souviens que c'était
le genre de messages qui faisait sauter mon prof au plafond, d'où mon
inquiétude.



C'est toujours pareil, il y a warning et warning.
Certaines dénotent des bugs de façon quasi certaines du genre: "variable
xxx may be used uninitialized", les problèmes de shadowing et d'aliasing,
..., certaines sont des erreurs de style pouvant éventuellement entrainer
des bugs et certaines sont anodines.
L'idéal étant de toujours compiler avec les flags -Wall -W -Werror (ce
qu'on fait au boulot pout les softs de prod, par ex), mais il y a assez
peu de softs qui compilent dans ces conditions...

Sur la Gentoo, tu peux activer "FEATURES=maketest" pour les packages qui
semblent être buggés. Tu verras que certains le sont effectivement.
L'inconvénient de cette méthode est que tu vas multiplier par dix le
temps d'installation de certains packages (il vaut mieux le savoir avant !).


Euh, sur le P-III, non merci. 50 heures de compilation (noyau + X +
gnome) en partant d'un stage 3, j'ai donné, merci. ;-)


Avatar
Jerome Lambert
Christophe PEREZ wrote:
Le Sun, 21 Nov 2004 22:42:03 +0100, Jerome Lambert a écrit:


Merci de vos éclaircissements,



Monsieur TiChou est demandé ici pour vendre sa soupe ! :-))))

... surtout que c'est suite à une de nos conversations que je m'y suis

remis, mais sérieusement et avec application cette fois-ci (voir autres
messages).


Avatar
no_spam
On Sun, 21 Nov 2004 23:25:49 +0100, Jerome Lambert wrote:

no_spam wrote:
On Sun, 21 Nov 2004 22:42:03 +0100, Jerome Lambert wrote:


(C'est limite débats, mais je préfère d'abord une réponse *technique*)

Bonsoir,

Coutumier des distributions binaires, je me suis attelé ce week-end à
l'installation d'une Gentoo 2004.3.



Enfin un courageux ;-)


Bah, la documentation est excellente, et si on l'applique point par
point on arrive facilement à un résultat qui en vaut *vraiment* la
peine. ;-)


C'est vrai.

En effet, c'est assez stupéfiant d'avoir un P-III 450/128Mo à peine
moins réactif qu'un Athlon64 3000+/1Go, le premier avec une Gentoo, le
second avec une Fedora Core 3 Amd64. (Faut dire aussi que vu la faible
quantité de ram, j'ai placé l'option Os dans make.conf, et kernel + X +
Gnome 2.8 me consomme alors royalement 50Mo de ram!!!)


Le temps de boot est stupéfiant... Disons plutôt qu'il rejoint le
raisonable... et qu'il prouve que Linux peut booter rapidement (pour info,
1,8 secondes pour avoir un shell sur un PPC embedded à 208 Mhz).

[...]
Mais ça soulève un autre problème: vu le résultat auquel je suis
parvenu, je suis tenté d'installer la version 2004.3 pour Amd64 sur mon
portable Amd64.

J'ai lu les releases notes pour l'Amd64, qui semblent encouragentes. Je
suppose que les paquets intégrés à l'arbre Amd64 sont vérifiés...


J'utilise la Gentoo sur un amd64 (le PC dont je me sert actuellement).
Je confirme que 90% des packages marchent correctement.
Il y a encore des packages qui n'ont pas été portés / testés, mais
globalement, ça marche aussi bien que sur x86 32 bits.

[...]

Sur la Gentoo, tu peux activer "FEATURES=maketest" pour les packages qui
semblent être buggés. Tu verras que certains le sont effectivement.
L'inconvénient de cette méthode est que tu vas multiplier par dix le
temps d'installation de certains packages (il vaut mieux le savoir avant !).


Euh, sur le P-III, non merci. 50 heures de compilation (noyau + X +
gnome) en partant d'un stage 3, j'ai donné, merci. ;-)


Je l'ai fait sur un PPro 100 ;-)
Et j'ai même hacké une base pour l'installer sur un vieux mac en 68040...
La, c'est de l'ordre de la semaine pour le bootstrap !
Ca compile en gros une glibc par jour ;-)



Avatar
Jerome Lambert
no_spam wrote:
On Sun, 21 Nov 2004 23:25:49 +0100, Jerome Lambert wrote:
(...)

Mais ça soulève un autre problème: vu le résultat auquel je suis
parvenu, je suis tenté d'installer la version 2004.3 pour Amd64 sur mon
portable Amd64.

J'ai lu les releases notes pour l'Amd64, qui semblent encouragentes. Je
suppose que les paquets intégrés à l'arbre Amd64 sont vérifiés...



J'utilise la Gentoo sur un amd64 (le PC dont je me sert actuellement).
Je confirme que 90% des packages marchent correctement.
Il y a encore des packages qui n'ont pas été portés / testés, mais
globalement, ça marche aussi bien que sur x86 32 bits.


Mmmh, je sens que la Fedora 3 de ma machine ne verra pas 2005. Au congés
de fin d'année, couic!

Merci pour les infos,

Jerome.


Avatar
TiChou
Dans le message <news:,
*Jerome Lambert* tapota sur f.c.o.l.configuration :

Christophe PEREZ wrote:
Jerome Lambert a écrit:

Merci de vos éclaircissements,


Monsieur TiChou est demandé ici pour vendre sa soupe ! :-))))



Ça veut dire quoi ça ? :)))

À vrai dire, les problèmes de compilations évoqués par Jérôme ne sont pas
trop ma partie. C'est bien plus le domaine de no_spam qui d'ailleurs nous a
expliqué en grand partie ce qui fallait retenir de ces warnings.
Je rajouterai juste une chose, c'est qu'on rencontre aussi de plus en plus
de warnings au fur et à mesure que gcc évolue, surtout depuis la version 3,
car celui-ci est de plus en plus strict et accepte de moins en moins les
écarts de syntaxe.

... surtout que c'est suite à une de nos conversations


Je me souviens très bien de cette conversation.

que je m'y suis remis, mais sérieusement et avec application cette fois-ci
(voir autres messages).


Je suis ravi que tu ais franchi le pas et il semble que ça se passe très
bien pour toi (normal quoi ! :) ). Et, même si la phase d'installation, de
compilation et de configuration est très intéressante, instructive et voir
amusante, tu verras que c'est à l'utilisation qu'on apprécie encore plus
cette distribution comme je l'avais souligné d'ailleurs dans la conversation
que tu rappelais précédemment.

--
TiChou



Avatar
Jerome Lambert
TiChou wrote:
Dans le message <news:,
*Jerome Lambert* tapota sur f.c.o.l.configuration :
(...)

que je m'y suis remis, mais sérieusement et avec application cette
fois-ci
(voir autres messages).



Je suis ravi que tu ais franchi le pas et il semble que ça se passe très
bien pour toi (normal quoi ! :) ). Et, même si la phase d'installation,
de compilation et de configuration est très intéressante, instructive et
voir amusante, tu verras que c'est à l'utilisation qu'on apprécie encore
plus cette distribution comme je l'avais souligné d'ailleurs dans la
conversation que tu rappelais précédemment.


Et je confirme à nouveau.
D'une part elle tourne comme une fusée *avec des programmes récents* et
malgré une optimisation que l'on pourrait certainement améliorer
(CFLAGS="-Os -march=pentium3 -fomit-frame-pointer -pipe -msse " et
USE="gtk gtk2 gnome userlocales").

D'autre part, comme la pile de la machine est morte, j'ai installé ntp.
Quelle ne fut pas ma surprise de voir emerge m'afficher à la fin de son
boulot quelques lignes pour m'expliquer ou se trouvaient les principaux
fichiers, quelle était leur utilité et comment les configurer.
Cooool!


Avatar
billiob

[questions-réponses sur les warnings de gcc concernant les variables]

Euh, sur le P-III, non merci. 50 heures de compilation (noyau + X +
gnome) en partant d'un stage 3, j'ai donné, merci. ;-)


Bonjour.
Je souhaite installer cette distribution suite aux commentaires de
TiChou et autres. Ayant lu la très bonne doc, je me pose une question
concernant le stage 3.
Ma machine permet de partager la connexion à internet et je pensais donc
l'installer via le stage 3 afin d'avoir une courte installation et
permettre de recompiler le tout au fur et à mesure. Le stage 3
nécessite-t-il vraiment tant de compilation ?
Auriez-vous une petite doc pour savoir quoi mettre dans la variable
cflags ? La doc de Gentoo renvoi vers celle de gcc qui n'est pas très
explicite pour le débutant au niveau de la compilation que je suis !
Ayant un amd athlon xp 2000+, j'ai téléchargé les cds
install-x86-universal-2004.3.iso et packages-athlon-xp-2004.3.iso via
bittorent.

Résumé:
* Faut-il une longue compilation avec le stage 3 et le cd de packages ?
Je pense que non mais le message de Jerome Lambert me met en doute.

* Comment remplir la variable CFLAGS pour mon architecture (je pensais
mettre -O2 -march=athlon-xp -pipe ) ?
Je ne remplirai cette variable que lorsque j'aurai terminé
l'installation bien sûr !

Merci d'avoir pris de votre temps pour m'avoir lu.
--
@+
billiob
Utilisateur de Linux n°342916
Enregistrez-vous sur http:counter.li.org !!
Remplaçez INVALID par swissinfo pour m'envoyer un mail.

Avatar
Jerome Lambert
billiob wrote:

[questions-réponses sur les warnings de gcc concernant les variables]

Euh, sur le P-III, non merci. 50 heures de compilation (noyau + X +
gnome) en partant d'un stage 3, j'ai donné, merci. ;-)



Bonjour.


Bonsoir,

Je souhaite installer cette distribution suite aux commentaires de
TiChou et autres. Ayant lu la très bonne doc, je me pose une question
concernant le stage 3.
Ma machine permet de partager la connexion à internet et je pensais donc
l'installer via le stage 3 afin d'avoir une courte installation et
permettre de recompiler le tout au fur et à mesure. Le stage 3
nécessite-t-il vraiment tant de compilation ?


Le stage 3 ne nécessite que la compilation du noyau, qui est variable en
fonction de la puissance du processeur.

Ensuite, on se retrouve avec une distribution "de base": peu de services
réseaux, pas d'interface graphique, etc.

Alors soit on les compile, soit on installe les paquets précompilés.
Cela dépend de la finalité de la machine.

Dans mon cas, la machine étant un P-3 450/128Mo de ram, il était crucial
de générer le code le plus petit possible, d'où l'optimisation Os.

Auriez-vous une petite doc pour savoir quoi mettre dans la variable
cflags ? La doc de Gentoo renvoi vers celle de gcc qui n'est pas très
explicite pour le débutant au niveau de la compilation que je suis !
Ayant un amd athlon xp 2000+, j'ai téléchargé les cds
install-x86-universal-2004.3.iso et packages-athlon-xp-2004.3.iso via
bittorent.


Comme le stipule la documentation, le cd universal et packages ne sont
en général utiles que si vous désirez installer des paquets précompilés.

Si vous disposez d'un connexion haut débit, le minimal suffit amplement...

Résumé:
* Faut-il une longue compilation avec le stage 3 et le cd de packages ?
Je pense que non mais le message de Jerome Lambert me met en doute.


Non, car le cd de packages sous-entend que vous n'allez pas compiler,
donc cela revient à installer une distribution binaire genre Debian,
modulo la compilation du noyau (+/- 1 heure sur votre machine)

* Comment remplir la variable CFLAGS pour mon architecture (je pensais
mettre -O2 -march=athlon-xp -pipe ) ?


En lisant le manuel de gcc, je dirais
-O3 -march=athlon-xp -pipe -funroll-loops -fomit-frame-pointer

et puis un petit coup de cat /proc/cpuinfo pour voir ce que l'on peut
activer (sse, 3dnow, etc.), mais les pros me corrigeront.

De plus, je compte installer Gentoo sur mon portable (Amd64), mais là
j'irai à une install party ce week-end pour que l'on m'explique quels
flags je peux utiliser et quels paramètres je dois activer dans mon
noyau, afin d'éviter Genkernel...

Je ne remplirai cette variable que lorsque j'aurai terminé
l'installation bien sûr !

Merci d'avoir pris de votre temps pour m'avoir lu.


De rien.


1 2 3 4 5