编译失败,因为缺少 Gnucobol DB2 程序的库



Gnucobol - db2 program.sqb, Preprocess done.编译程序.cbl失败 -

DB2Express-C 在容器内运行,GnuCobol 安装在 VM 中

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 退出状态

COBC 编译器失败,因为/usr/bin/ld:找不到 -LDB2我们是否缺少一些库?

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

确保为库指定的目录:

  • 存在

  • 可由执行编译的用户读取

  • 包含所有必需的库(超过 100 个(,包括 libd2.so.1 等。

因此,Db2-express 安装必须选择相关选项来添加用于开发的工件(包含、库/共享对象等(。

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

最新更新