Gnucobol DB2程序缺少库,导致编译失败

时间:2019-07-08 14:09:33

标签: compiler-errors db2 gnucobol

Gnucobol-db2 program.sqb,预处理完成。 program.cbl的编译失败-

在容器中运行的DB2Express-C和VM中安装的GnuCobol

DB2预处理成功 针对在容器内运行的DB2服务器进行的预处理

$ db2 "prep SQLCOBPGM.sqb bindfile target ANSI_COBOL"
$ ls
db2inst1  isus  log  SQLCOBPGM.bnd  `enter code here`SQLCOBPGM.cbl  SQLCOBPGM.sqb  sqllib

编译失败 为了进行编译,将.cbl和sql库复制到已安装GnuCobol的ubuntu VM上

  

#cobc -static SQLCOBPGM.cbl -L / db2home / db2inst1 / sqllib / lib64 -ldb2 -x -O / usr / bin / ld:找不到-ldb2 collect2:错误:ld返回1退出状态< / strong>

cobc编译器失败,因为/ usr / bin / ld:找不到-ldb2 我们缺少一些图书馆吗?

2 个答案:

答案 0 :(得分:0)

您已经指定了要链接的库(db2)和用于查找的库路径,这看起来不错。 99%的错误是指定的路径不包含libdb2文件(我建议将ls /db2home/db2inst1/sqllib/lib64/libdb2*的输出添加到问题中)或库与链接器的体系结构不匹配(cobc和ld)是64位可执行文件,不是吗?),或者执行操作的用户对库没有读取权限/在其路径上没有执行权限。

答案 1 :(得分:-1)

确保为库指定目录:

  • 存在

  • 用户可以读取
  • 进行编译

  • 包含所有必需的库(其中100多个),包括libd2.so.1等。

因此Db2-express安装必须选择相关选项以添加用于开发的人工制品(包括附件,库/共享对象等)。

在Linux上使用cobc为我工作。我还确保LD_LIBRARY_PATH包含该目录,以允许运行生成的编译程序。