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 我们缺少一些图书馆吗?
答案 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包含该目录,以允许运行生成的编译程序。