2

我试图在 z/OS USS 上编译 z/lib(那是大型机)。我得到了 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

4 回答 4

3

事实证明,有一个在 USS 上编译的先前版本的 zlib,版本 1.1.4 或接近该版本。它是一个后级,但我认为这是可行的,因为它是在最新代码中实现 FAR 指针之前。所以 atm 我想我已经让它工作了。

感谢你的帮助。

问候

标记。

于 2009-07-06T07:09:03.010 回答
1

FAR 不是 C89 关键字,它是 Microsoft/Intelism 并且可能在某处#defined。如果不是,则需要将其定义为空:

#define FAR

但是,这可能只能解决许多问题之一。我猜想该库使用某种形式的条件编译来处理诸如 FAR 指针之类的事情 - 您需要阅读文档以找到最适合您的平台的配置。

于 2009-06-30T08:35:44.950 回答
1

我会使用 xlc 而不是 c89,因为 xlc 是您的系统默认编译器,但您仍然可能会遇到问题。我会订阅 MVS-OE 电子邮件列表,上面的人很有帮助。有关列表的信息链接现在似乎已关闭,因此请发送电子邮件至 LISTSERV@VM.MARIST.EDU,并附上以下消息:INFO MVS-OE

于 2009-06-30T12:19:47.103 回答
1

FWIW,IBM 提供了 zlib 的预构建版本,其中包括对最近老式大型机上可用的压缩硬件(所谓的 zEDC)的支持。请参阅zlib 了解 zEnterprise 数据压缩

于 2018-07-18T12:42:54.763 回答