64位db2 db2api.lib的链接问题被截断以适应错误



我安装了64位的db2express和cygwin。我正在尝试一个非常简单的测试:

gcc ex1.o-o ex1.exe../../sqllib/lib/db2api.lib

..//sqllib/lib/db2api.lib(DB2APP64.dll.b):(.text+0x2):根据../..中.data$5节中定义的符号__imp_sqlastrt' defined in .idata$5 section in ../../sqllib/lib/db2api.lib(DB2APP64.dll.b) ../../sqllib/lib/db2api.lib(DB2APP64.dll.b):(.text+0x2): relocation truncated to fit: R_X86_64_32 against symbol __imp_sqlaaloc,截断重新定位以适应:R_X86_64_32/sqllib/lib/db2api.lib(DB2APP64.dll.b)../../sqllib/lib/db2api.lib(DB2APP64.dll.b):(.text+0x2):根据../..中.data$5节中定义的符号"__imp_sqlasetdata"截断重新定位:R_X86_64_32/sqllib/lib/db2api.lib(DB2APP64.dll.b)等等。

我尝试了所有的mcmodel选项,但都没有成功。除此之外,我找不到解决这个问题的办法。我需要做什么才能使其正确链接?

(与前一篇文章的问题相同,但经过大量搜索,似乎其他人已经得到了与上述非常相似的东西,可能是在32位机器上)

如果您使用的是binutils版本2.24,我怀疑问题如下:https://sourceware.org/bugzilla/show_bug.cgi?id=16598

幸运的是,GNU ld的Cygwin端口能够直接链接DLL。指定相关DLL而不是导入库db2api.libgcc应该有效。

最新更新