Pregunta

Estoy tratando de recopilar z / lib en z / OS USS (esa es la derecha un mainframe). ive consiguió gmake y el compilador C89 (que im asumiendo que es compatible con los estándares C89) y USS se supone que es compatible con POSIX.

Pero zlib parece estar tropezar en

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

con el error siguiente (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

cuando tomo progresivamente las FAR * (creo que es un puntero lejos, pero estoy realmente no es tan seguro) los errores desaparecen. Pero como esto es una biblioteca, no estoy seguro de qué otros artefactos van a ser producidos mediante la eliminación de esto.

Alguien tiene alguna idea?

cualquier edad cabezas de mainframe por ahí?

¿Fue útil?

Solución

resulta que hay una versión anterior de zlib que compila el USS, versión 1.1.4 o cerca de eso. Su nivel de vuelta, pero supongo que esto funciona porque es antes de la aplicación del puntero FAR en el último código. Así atm Creo que he conseguido que funcione.

Gracias por toda su ayuda.

Regards

Marcos.

Otros consejos

FAR no es una palabra clave C89, es un Microsoft / Intelism y probablemente #defined en alguna parte. Si no es así, es necesario definir como nada:

#define FAR

Sin embargo, esto probablemente sólo solucionar uno de los muchos problemas. Yo supongo que la biblioteca utiliza algún tipo de compilación condicional para manejar las cosas como punteros FAR -. Es necesario leer la documentación para encontrar qué configuración es más suitabkle para su plataforma

Me utilizar xlc en lugar de C89 desde xlc es su sistema compilador por defecto pero todavía probablemente tendrá problemas. Me suscribo a la lista de correo electrónico MVS-OE, las personas en él son bastante útiles. El enlace a información sobre la lista parece ser ahora tan abajo envía un correo electrónico a LISTSERV@VM.MARIST.EDU  con el mensaje: INFO MVS-OE

Fwiw, IBM proporciona una versión de pre-compilados de zlib que incluye soporte para el hardware de compresión (la llamada zEDC) disponible en unidades centrales de reciente cosecha. Ver zlib para zEnterprise compresión de datos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top