2009-06-30 6 views
2

En essayant de compiler z/lib sur z/OS USS (c'est à dire un mainframe). ive a obtenu gmake et le compilateur c89 (qui suppose que c89 est conforme aux normes) et USS est censé être compatible avec POSIX.zlib sur z/OS USS

Mais zlib semble être trébucher sur

struct internal_state FAR *state; /* not visible by applications */ 

avec l'erreur suivante (s)

c89 -O3 -DUSE_MMAP -D_XOPEN_SOURCE_EXTENDED=1 -D_POSIX_SOURCE -c -o example.o example.c 
ERROR CCN3277 ./zlib.h:92 Syntax error: possible missing ';' or ','? 
ERROR CCN3007 ./zlib.h:92 "struct internal_state" is undefined. 
ERROR CCN3166 ./zlib.h:103 Definition of function FAR requires parentheses. 
ERROR CCN3276 ./zlib.h:103 Syntax error: possible missing '{'? 
ERROR CCN3273 ./zlib.h:124 Missing type in declaration of gz_header. 
ERROR CCN3166 ./zlib.h:126 Definition of function gz_header requires parentheses. 
ERROR CCN3276 ./zlib.h:126 Syntax error: possible missing '{'? 
WARNING CCN3137 ./zlib.h:1346 Declaration must declare at least one declarator, tag, or the members of an enumeration. 
ERROR CCN3275 ./zlib.h:1350 Unexpected text z encountered. 
ERROR CCN3282 ./zlib.h:1350 The type of the parameters must be specified in a prototype. 
ERROR CCN3275 ./example.c:95 Unexpected text file encountered. 
ERROR CCN3045 ./example.c:95 Undeclared identifier gzFile. 
ERROR CCN3046 ./example.c:96 Syntax error. 
ERROR CCN3045 ./example.c:98 Undeclared identifier file. 
ERROR CCN3019 ./example.c:523 Expecting an array or a pointer to object type. 
ERROR CCN3280 ./example.c:527 Function argument assignment between types "const char*" and "int" is not allowed. 
CCN0793(I) Compilation failed for file ./example.c. Object file not created. 
FSUM3065 The COMPILE step ended with return code 12. 
FSUM3017 Could not compile example.c. Correct the errors and try again. 
gmake: *** [example.o] Error 3 

quand je prends progressivement les FAR * (je pense que son un pointeur loin, mais im vraiment pas si sûr) les erreurs disparaissent. Mais comme c'est une bibliothèque, je ne suis pas sûr de savoir quels autres artefacts vont être produits en supprimant cela.

Est-ce que quelqu'un a des idées?

y a-t-il un vieux mainframe?

+0

C'est exactement pourquoi je n'aime pas le préprocesseur C/C++. – Malcolm

Répondre

2

il se trouve il y a une version précédente de zlib qui compile sur USS, version 1.1.4 ou proche de cela. C'est un niveau de retour, mais je présume que cela fonctionne car c'est avant l'implémentation du pointeur FAR dans le dernier code. Donc, je pense que ça a marché.

merci pour votre aide.

Observe

Marque.

1

FAR n'est pas un mot-clé C89, c'est un Microsoft/Intelism et est probablement # défini quelque part. Sinon, vous devez définir comme rien:

#define FAR 

Cependant, ce sera probablement seulement résoudre l'un des nombreux problèmes. Je suppose que la bibliothèque utilise une forme de compilation conditionnelle pour gérer des choses comme les pointeurs FAR - vous devez lire les docs pour trouver la configuration la mieux adaptée à votre plate-forme.

1

J'utiliserais xlc au lieu de c89 puisque xlc est votre compilateur par défaut du système, mais vous aurez probablement encore des problèmes. Je m'abonne à la liste d'email de MVS-OE, les gens dessus sont très utiles. Le lien vers les informations au sujet de la liste semble être en baisse maintenant si envoyez un courriel à [email protected] avec le message: INFO MVS-OE

Questions connexes