compiler-errors - 编译失败,因为 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 我们是否缺少一些库?
解决方案
您已经指定了要链接的库 (db2) 和用于查找的库路径,这似乎很好。99% 的错误是指定的路径不包含 libdb2 文件(我建议将输出添加ls /db2home/db2inst1/sqllib/lib64/libdb2*
到问题中)或库与链接器的体系结构不匹配(cobc 和 ld 是 64 位可执行文件,不是吗?),或者执行用户没有对库的读取权限/对其路径的执行权限。