Pergunta

Estou tentando compilar z / lib no z / OS USS (que é o direito de um mainframe). ive gmake tem eo compilador c89 (que im assumindo é C89 compatível com as normas) e USS é suposto ser compatível com POSIX.

Mas zlib parece ser tropeçar em

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

com o seguinte erro (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 eu progressivamente tirar o FAR * (eu acho que é um ponteiro longe, mas im realmente não é certo) os erros ir embora. Mas como esta é uma biblioteca, eu não tenho certeza que outros artefatos vão ser produzido por querer retirar esta.

Alguém tem alguma idéia?

quaisquer cabeças de mainframe antigos lá fora?

Foi útil?

Solução

verifica-se que há uma versão anterior do zlib que compila no USS, versão 1.1.4 ou perto disso. Seu nível de uma volta, mas eu presumo que isso funciona porque é antes da implementação do ponteiro FAR na última código. Então atm eu acho que ive tenho que trabalhar.

Obrigado por toda sua ajuda.

Saudações

Mark.

Outras dicas

FAR não é uma palavra-chave C89, é um Microsoft / Intelism e é provavelmente #defined em algum lugar. Se não, você precisa defini-lo como nada:

#define FAR

No entanto, isso provavelmente só irá corrigir um dos muitos problemas. Eu diria que a biblioteca usa alguma forma de compilação condicional às coisas do punho como ponteiros FAR -. Você precisa ler os docs para descobrir qual configuração é mais suitabkle para sua plataforma

Eu usaria xlc vez de c89 desde xlc é seu compilador padrão do sistema, mas você ainda provavelmente vai ter problemas. Eu assinar a lista de e-mail MVS-OE, as pessoas nele são bastante úteis. O link para informações sobre a lista parece ser para baixo agora, então envie um email para LISTSERV@VM.MARIST.EDU com a mensagem: INFO MVS-OE

FWIW, a IBM fornece uma versão pré-construídos de zlib que inclui suporte para o hardware de compressão (os chamados zEDC) disponíveis em mainframes recente-safra. Consulte zlib para zEnterprise Data Compression

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top