gpt4 book ai didi

通过 Unix 系统服务 (USS) 中的 Shell 在 z/OS 上编译 C 程序

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:15 25 4
gpt4 key购买 nike

我在 USS 文件系统中有一个 C 文件。我的 C 文件非常基础。它包含打印“Hello World”的逻辑。我执行:c89 [文件名]

我得到了 CCN0634(U) 的返回码 (rc)。如果我尝试 cc 编译器,则会抛出相同的 rc。我用谷歌搜索了前面提到的 rc。 IBM 知识中心告诉我以下内容:

检查编译器是否安装正确。确保区域中有足够的内存来获取模块。您可能需要指定运行时选项 HEAP(,,,FREE,,) 以防止编译器耗尽内存。

上面的解释没有多大意义。我用谷歌搜索了一些解决方案。所有搜索结果都导致使用 JCL 进行批量编译。这是压倒性的,因为有许多不同的口味。

Q1:在 Unix Shell Services 上编译 C 程序最简单的方法是什么?

Q2:如何检查是否安装了编译器? cc --version 不起作用。

预期结果

  • 编译我的C程序

实际结果

  • 我的 C 程序无法编译。

最佳答案

在 z/OS 上的 USS 中编译 C 程序的最简单方法是使用 xlc 实用程序。下面是一个带有两个命令行选项 -v 和 -qphaseid 的示例,它们显示有关实用程序版本的信息以及编译过程中涉及的编译器组件:

xlc -v -c -qphaseid a.c
FSUM0000I Utility(xlc) Level(D170323.1712)
exec: export(export,XL_CONFIG=/bin/../usr/lpp/cbclib/xlc/etc/xlc.cfg:xlc,NULL)
exec: /usr/lpp/cbclib/xlc/exe/ccndrvr(/usr/lpp/cbclib/xlc/exe/ccndrvr,./,./a.c,*.c,CMDOPTS(DEFINE(errno=(*__errno())),NOTEST,-qoe,-qargparse,-qexecops,-qflag=i,-qhalt=16,-qnodebug,-qnolsearch,-qredir,-qlocale=POSIX,-qlongname,-qmaxmem=*,-qmemory,-qnestinc=255,-qnoexpmac,-qnoexportall,-qnogonumber,-qtarget=le,-qnolibansi,-qlist=/dev/fd1,-qnolist,-qnomargins,-qnooffset,-qnosequence,-qnoshowinc,-qsource=/dev/fd1,-qnosource,-qnoxref,-qterminal,-qnooptimize,-qplist=host,-qspill=128,-qstart,-qnoipa,DEFINE(_OPEN_DEFAULT=1),-qansialias,-qcpluscmt,-qlanglvl=extended,-qnoupconv,-qnoalias,-qnoaggregate,-qnoinfo,-qnoevents,-qrent,-qinline=auto:noreport:100:1000,-qnoinline),object(./a.o),-qphaseid,NOPPONLY,NULL)
exec: export(export,STEPLIB=CBC.SCCNCMP:CEE.SCEERUN2:CEE.SCEERUN,NULL)
exec: export(export,_C89_ACCEPTABLE_RC=4,NULL)
CCN0000(I) Product(5650-ZOS) Phase(CCNEOPTP) Level(D190612.Z2R3)
CCN0000(I) Product(5650-ZOS) Phase(CCNDRVR ) Level(D190612.Z2R3)
CCN0000(I) Product(5650-ZOS) Phase(CCNEP ) Level(D190612.Z2R3)
CCN0000(I) Product(5650-ZOS) Phase(CCNETBY ) Level(D190612.Z2R3)
CCN0000(I) Product(5650-ZOS) Phase(CCNECWI ) Level(D190612.Z2R3)

XL C/C++ 编译器是 z/OS 上的一项收费功能,因此您的系统可能没有安装它。正确安装的编译器将在 /bin/../usr/lpp/cbclib/xlc/etc/xlc.cfg

中有一个有效的配置文件

也许需要澄清一下,因为 USS 中有两个调用 XL C/C++ 编译器的实用程序可能并不明显。

  1. c89 实用程序,其操作由许多环境变量控制(大多数用户在弄清楚如何定义所需的环境变量时会遇到困难)

  2. xlc 实用程序,其操作由易于设置的配置文件控制。大多数用户对安装编译器的系统程序员自定义的默认配置文件没有问题,但如果更高级的用户需要不同的设置,则可以将配置文件复制到私有(private)文件中并进行修改以满足需要。修改后,可以通过在命令行中包含 -F/path_to_modified_config_file 选项来使用它。

关于通过 Unix 系统服务 (USS) 中的 Shell 在 z/OS 上编译 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58104414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com