gnucobol gcc:error:`cob config:没有这样的文件或目录

gnucobol gcc:error:`cob config:没有这样的文件或目录,cobol,gnucobol,Cobol,Gnucobol,我试图练习一个C程序(hello.C)从手册gnucobol调用cobol程序(比如.cob) ---- say.cob ------ IDENTIFICATION DIVISION. PROGRAM-ID. say. ENVIRONMENT DIVISION. DATA DIVISION. LINKAGE SECTION. 01 HELLO PIC X(6). 01 WORLD PIC X(6). PROCEDURE DI

我试图练习一个C程序(hello.C)从手册gnucobol调用cobol程序(比如.cob)

    ---- say.cob ------
    IDENTIFICATION DIVISION.
    PROGRAM-ID. say.
    ENVIRONMENT DIVISION.
    DATA DIVISION.
    LINKAGE SECTION.
    01 HELLO PIC X(6).
    01 WORLD PIC X(6).
    PROCEDURE DIVISION USING HELLO WORLD.
    DISPLAY HELLO WORLD.
    EXIT PROGRAM.

    ---- hello.c -
    #include <libcob.h>
    extern int say(char *hello, char *world);
    int
    main()
    {
     int ret;
     char hello[7] = "Hello ";
     char world[7] = "World!";
     cob_init(0, NULL);
     ret = say(hello, world);
     return ret;
     }


     C:\Users\S M Rao>gcc -c ‘cob-config --cflags‘ hello.c
     gcc: error: `cob-config: No such file or directory
     gcc: error: unrecognized command line option '--cflags`'

    if I run with commands 

    cobc -c hello.c 
    cobc -c -static say.cob 
    cobc -x -o hello hello.o say.o

   getting following error 

    C:\Users\S M Rao>cobc -x -o hello hello.o say.o
    hello.o:hello.c:(.text+0x5c): undefined reference to `say'
    collect2.exe: error: ld returned 1 exit status
——say.cob------
身份查验司。
程序ID,说吧。
环境司。
数据司。
联动部分。
01你好,图X(6)。
01世界图片X(6)。
程序使用helloworld划分。
显示HELLO WORLD。
退出程序。
----你好,c-
#包括
extern int say(char*你好,char*世界);
int
main()
{
int ret;
char hello[7]=“hello”;
char world[7]=“world!”;
cob_init(0,NULL);
ret=说(你好,世界);
返回ret;
}
C:\Users\S M Rao>gcc-C'cob config--cflags'hello.C
gcc:error:`cob config:没有这样的文件或目录
gcc:错误:无法识别的命令行选项'--cflags`'
如果我使用命令运行
你好
cobc-c-static say.cob
cobc-x-o你好你好。o说。o
获取以下错误
C:\Users\S M Rao>cobc-x-o hello.o say.o
hello.o:hello.c:(.text+0x5c):对“say”的未定义引用
collect2.exe:错误:ld返回了1个退出状态
我可以看到cob配置存在于gnucobol文件夹中。在环境变量COB\u CONFIG\u DIR%COB\u MAIN\u DIR%\CONFIG中

有什么问题吗?需要帮忙吗


cob config
需要是一个可执行脚本,通常是这样。 当您指定windows路径时,我假设您使用该路径,而这个路径不能运行shell脚本。您可以使用执行此shell脚本的附加
cob config.bat
来解决这个问题,但在本例中,它将输出mingw/wsl/cygwin/。。。可能无法在Windows gcc中使用的路径

解决方案:

  • 在匹配的shell中运行gcc,而不是从windows端运行,并在
    $PATH
  • 使用
    cobc
    的功能为您调用C处理器(如果需要还可以调用链接器):
    cobc-C hello.C

  • 你好,谢谢你的回复。我将cob config设置为可执行文件,但仍然收到错误。用截图修改问题。你能详细说明你的答案吗?感谢问题在于,您试图在没有posix shell的Windows环境中执行与
    内联的
    posix命令内联的posix shell脚本。这根本行不通。要使其工作,您需要在shell中执行该命令,而不是在cmd中,然后可能会遇到不匹配文件夹的问题。正如答案中所指出的:只要让
    cobc
    执行任何必要的C编译,对于非COOBL部分也是如此,它将做正确的事情+链接到libcob。感谢您的回复。我安装了cygwin并运行了上述命令,但出现了相同的错误,因此您确实在cygwin shell中运行了这些命令(请注意,如果只对任何单个程序执行,并且安装的工具最好只与其他cygwin安装的工具混合使用,那么这通常是一种过度杀伤力),而且cygwin的
    $PATH
    中确实有
    cob config
    ?让cobc放弃“使用内联脚本的输出”的方法来处理所有这些事情怎么样?我不明白你的意思。。我已经使用Windows10下载了Gnucobol。您能告诉我运行上述程序还需要下载什么吗?