Domanda
Nel tentativo di compilare z / lib su z / OS USS (thats a destra un mainframe). Ive ha ottenuto gmake e il compilatore C89 (che im assumendo è standard C89 compliant) e USS si suppone che sia conforme a POSIX.
Ma zlib sembra essere inciampare su
struct internal_state FAR *state; /* not visible by applications */
con il seguente errore (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
quando ho progressivamente estrarre il FAR * (Penso che sia un puntatore lontano, ma in realtà non im che sicuro) gli errori vanno via. Ma come questo è una libreria, non sono sicuro che cosa altri manufatti stanno per essere prodotto da rimozione di questa.
qualcuno ha ottenuto tutte le idee?
alcun responsabile mainframe vecchi là fuori?
Soluzione
si scopre c'è una versione precedente di zlib che compila su USS, la versione 1.1.4 o vicino a quello. Il suo livello di nuovo, ma presumo che questo funziona perché è prima dell'attuazione del puntatore FAR nel codice più recente. Così atm penso Ive got a farlo funzionare.
Grazie per il vostro aiuto.
Saluti
Marco.
Altri suggerimenti
fino ad ora non è una parola chiave C89, è un Microsoft / Intelism ed è probabilmente #defined da qualche parte. In caso contrario, è necessario definire come nulla:
#define FAR
Tuttavia, questo sarà probabilmente risolvere solo uno dei tanti problemi. Direi che la libreria utilizza una forma di compilazione condizionale per gestire le cose come puntatori FAR -. È necessario leggere la documentazione per trovare quale configurazione è più suitabkle per la propria piattaforma
Mi piacerebbe usare xlc al posto di C89 dal XLC è il sistema compilatore di default, ma ci si può comunque probabilmente hanno problemi. Mi piacerebbe iscriversi alla mailing list MVS-OE, la gente su di essa sono molto utili. Il link per informazioni sulla lista sembra essere fin d'ora così inviare e-mail a LISTSERV@VM.MARIST.EDU con il messaggio: INFO MVS-OE
FWIW, IBM fornisce una versione precompilata di zlib che include il supporto per l'hardware di compressione (cosiddetto zEDC) disponibili su mainframe recente-epoca. Vedere zlib per zEnterprise Data Compression