GnuCOBOL 未生成动态链接库 ELF 引用

GnuCOBOL 未生成动态链接库 ELF 引用

现在 GnuCOBOL,Ubuntu 包是 open-cobol。

从 Ubuntu 14.04 开始?编译器无法链接动态库引用以供 dlopen 在运行时使用。gcc链接库提示ldd中没有该库的踪迹。-l

ld这已经起作用很长时间了,但在调用或假设上似乎发生了一些变化?

技术细节https://stackoverflow.com/questions/26227458/gnucobol-failing-to-find-dynamic-symbols-only-on-recent-ubuntu

相同的 cobc 源,基于 Fedora 构建,生成ldd具有动态链接库条目的二进制文件。CALL 功能自 2006 年起就一直有效。

是否有人知道 dlopen?、dlsym?、autotools? 链接器优化 (GnuCOBOL CALL 是动态的,在运行时通过字符串名称有效,而不是通过 ld 链接传递) 或 ld.so.conf 的最新变化?

gcc 开关假设?ldconfig 默认值?

GnuCOBOL 受到了阻碍,如果有人能指出需要做什么才能将-l库恢复到 ELF 二进制文件中,那就太好了。

干杯

答案1

修复路径已发布到上面链接的 StackOverflow 问题。

export COB_LDFLAGS='-Wl,--no-as-needed'是绕过此链接器优化更改的简单解决方案。真正的解决方案会更深入一些,但 Petesh 提供的提示满足了当前的需求。

相关内容