在RHEL 8.6上编译/链接COBOL代码,编译很好,但当它尝试链接时,我得到一个变量错误:cob2-F//etc/cob2.cfg-v-L/库64-ldb2-I/包含/cobol_a/- q "大小(16384K)-o cobol程序<cobolprog.cbl> -L/lib64 -ldb2 -I/include/cobol_a/ -q"size(16384K) -o cobolprog
输出为/usr/bin/ld:搜索-ldb2/usr/bin/ld时跳过不兼容的lib64/www.example.com:libdb2.so when searching for -ldb2 /usr/bin/ld: cannot find -ldb2 If I remove the -ldb2 I get 'undefined reference to 'SQLGSTRT', 'SQLGALOC etc
当我尝试使用lib32和-ldb2时,我没有看到问题?
我确实尝试过在cmd行上使用-q64,但显然这在Linux上不受支持。
db2level信息标记是"DB2 v11.5.0.0"、"s1906101300"、"DYN1906101300AMD64"和修复包"0"。产品安装在"/opt/IBM/db2/V11.5 "
cob2-V程序cob2版本1.1.0构建日期2021年9月27日星期一10:39:30
尝试32位编译cobol罚款,但它现在似乎有一个问题,链接一个静态库我需要:/usr/文件夹/文件夹:/usr/库/gcc/x86_64-redhat-linux/8/../../../../库/脚本1.0(.文本+0x1c):根据符号"__libc_csu_fini"无法解析R_386_GOTOFF重定位
1条答案
按热度按时间4c8rllxm1#
看起来您正在x86上使用IBM COBOL for Linux 1.1版。
根据IBM的link文档,ADDR编译器选项指定是创建32位还是64位目标文件。
此外,由于您使用的是版本1.1(截至2023年2月的当前可用版本),文档中还包含以下特定的相关注解:
注意:当前不支持ADDR(64)和-q64选项。编译器接受并忽略这些选项,默认为ADDR(32)。
这意味着您的目标文件是32位的,但您尝试链接(
ld
)与64位Db2库,因此ld
跳过不兼容的库,并显示您看到的消息。您应该改为链接32位Db2库,它们位于Db2客户机的lib32
目录中,因此请在命令行选项中对此进行安排。