zlib на z / OS USS - PullRequest
       38

zlib на z / OS USS

2 голосов
/ 30 июня 2009

Я пытаюсь скомпилировать z / lib на z / OS USS (это мэйнфрейм). У меня есть gmake и компилятор c89 (который, я предполагаю, соответствует стандартам c89), а USS должен быть POSIX-совместимым.

Но, похоже, zlib споткнулся на

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

со следующей ошибкой (ями)

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

когда я постепенно убираю FAR * (я думаю, что это дальний указатель, но я действительно не уверен), ошибки исчезают. Но поскольку это библиотека, я не уверен, какие другие артефакты будут создаваться, удалив это.

У кого-нибудь есть идеи?

какой-нибудь старый мэйнфрейм направляется туда?

Ответы [ 4 ]

3 голосов
/ 06 июля 2009

Оказывается, существует предыдущая версия zlib, которая компилируется в USS, версия 1.1.4 или близкая к ней. Это обратный уровень, но я предполагаю, что это работает, потому что это до реализации указателя FAR в последнем коде. Так что я думаю, что заставил его работать.

спасибо за вашу помощь.

Привет

Mark.

1 голос
/ 18 июля 2018

FWIW, IBM предоставляет готовую версию zlib, которая включает поддержку аппаратного сжатия (так называемого zEDC), доступного на мэйнфреймах последнего поколения. См. zlib для zEnterprise Сжатие данных

1 голос
/ 30 июня 2009

Я бы использовал xlc вместо c89, так как xlc - ваш системный компилятор по умолчанию, но у вас все еще вероятно будут проблемы. Я бы подписался на список рассылки MVS-OE, люди на нем весьма полезны. Ссылка на информацию о списке теперь недоступна, поэтому отправьте электронное письмо на адрес LISTSERV@VM.MARIST.EDU с сообщением: INFO MVS-OE

1 голос
/ 30 июня 2009

FAR - это не ключевое слово C89, это Microsoft / Intelism и, вероятно, где-то определено. Если нет, вам нужно определить его как ничего:

#define FAR

Однако это, вероятно, решит только одну из многих проблем. Я предполагаю, что библиотека использует некоторую форму условной компиляции для обработки таких вещей, как указатели FAR - вам нужно прочитать документы, чтобы найти, какая конфигурация наиболее подходит для вашей платформы.

...