[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: aide pour compilation...



MARIANO Georges wrote:
> 
> Salut,
> 
> (pour faire bref,
>         je cherche a compiler du code *généré* par une application "base"
>         l'application étant fourni sous forme de binaires, de sources C
>         auxiliaires [pour la génération] et de librairies ad hoc
>         L'application base est livrée en deux morceaux
>         (un common et un specific architecture iX86)
> )
> 
> j'ai une erreur de compilation :
>         - avec deux softs distincts
>         - erreur identique (voir ci-dessous)
>         - pas d'erreur pour la version SunOs de l'application "base"
>         - pas d'erreur sur une red hat (pas la plus récente)
> 
> voici le message d'erreur
> src/B_main.c:24: initializer element is not constant
> src/B_main.c:24: (near initialization for `sxstdout')
> src/B_main.c:24: initializer element is not constant
> src/B_main.c:24: (near initialization for `sxstderr')
> 
> le bout de source ... (les commentaires sont d'origine)
> ----------------------------------------------------------
> #include "f2unix.h"
> 
> /* On lit a priori sur stdin, et cetera */
> 
> #ifdef unix
> FILE    *sxstdout = {stdout}, *sxstderr = {stderr};
> #else
> FILE    *sxstdout = {NULL}, *sxstderr = {NULL};
> #endif
> 
> FILE    *sxtty;
> BOOLEAN         sxverbosep = {TRUE};
> ----------------------------------------------------------
> A noter : il y a plus loin... (quelques lignes...)
> ----------------------------------------------------------
> #ifndef unix
>     if (sxstdout == NULL) {
>         sxstdout = stdout;
>     }
>     if (sxstderr == NULL) {
>         sxstderr = stderr;
>     }
> #endif
> ----------------------------------------------------------
> 
> je suis en debian ;-)
> ii  gcc             2.95.2-1       The GNU C compiler.
> ii  g++             2.95.2-1       The GNU C++ compiler.
> 
> je connais (quasi) rien  en C
> si ça passe sur redhat, c'est qu'il doit y avoir un rapport avec
> l'environnement C de Debian non ???
> 
> merci pour tout indice...

Je pense que cela vient du compilateur, le message d'erreur en tous 
cas est un message d'erreur du compilateur.
Peut-etre gcc a-t-il accepte des instructions qu'il n'accepte plus 
maintenant.
Le message d'erreur est clair, une variable est initialisee avec
un elemenbt non constant, {stdout} en l'occurence.

pour resoudre ton probleme (si il n'y a pas trop de code genere) 
la solution est de remplacer la ligne 24 par :
FILE    *sxstdout, *sxstderr ;

et d'ajouter ces lignes dans ta fonction main juste apres les
declarations
de variable (qui sont toutes regroupees au debut de la fonction en C)

sxstdout = {stdout} ;
sxstderr = {stderr} ;

Ca peut marcher ... avec de la chance,

-- 
Vera Mickael Stagiaire


Reply to: