首页 > 解决方案 > 编译失败,因为 Gnucobol DB2 程序缺少库

问题描述

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

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

标签: compiler-errorsdb2gnucobol

解决方案


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


推荐阅读