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包含该目录以允许生成的编译程序运行。