Question

J'essaie de compiler z/lib sur z/OS USS (c'est vrai un mainframe).J'ai eu gmake et le compilateur c89 (qui, je suppose, est conforme aux normes c89) et USS est censé être conforme à POSIX.

Mais zlib semble trébucher

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

avec les erreurs suivantes

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 retire progressivement le FAR * (je pense que c'est un pointeur lointain mais je n'en suis vraiment pas sûr), les erreurs disparaissent.Mais comme il s'agit d'une bibliothèque, je ne suis pas sûr quels autres artefacts vont être produits en supprimant cela.

quelqu'un a des idées ?

des vieilles têtes d'ordinateur central là-bas ?

Était-ce utile?

La solution

il s'avère qu'il existe une version précédente de zlib qui se compile sur USS, version 1.1.4 ou proche.C'est un niveau arrière, mais je suppose que cela fonctionne car c'est avant l'implémentation du pointeur FAR dans le dernier code.Donc, je pense que je l'ai fait fonctionner.

Merci pour votre aide.

Salutations

Marque.

Autres conseils

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

#define FAR

Cependant, cela ne résoudra probablement qu’un problème parmi tant d’autres.Je suppose que la bibliothèque utilise une certaine forme de compilation conditionnelle pour gérer des choses comme les pointeurs FAR - vous devez lire la documentation pour trouver quelle configuration est la plus adaptée à votre plate-forme.

J'utiliserais xlc au lieu de c89 puisque xlc est le compilateur par défaut de votre système, mais vous aurez probablement encore des problèmes.Je m'abonnerais à la liste de diffusion MVS-OE, les personnes qui y figurent sont très utiles.Le lien vers les informations sur la liste semble être en panne maintenant, alors envoyez un e-mail à listserv@vm.marist.edu avec le message:INFO MVS-OE

FWIW, IBM fournit une version prédéfinie de zlib qui inclut la prise en charge du matériel de compression (appelé zEDC) disponible sur les mainframes récents.Voir zlib pour la compression de données zEnterprise

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top