![GnuCOBOL 未生成动态链接库 ELF 引用](https://linux22.com/image/866456/GnuCOBOL%20%E6%9C%AA%E7%94%9F%E6%88%90%E5%8A%A8%E6%80%81%E9%93%BE%E6%8E%A5%E5%BA%93%20ELF%20%E5%BC%95%E7%94%A8.png)
现在 GnuCOBOL,Ubuntu 包是 open-cobol。
从 Ubuntu 14.04 开始?编译器无法链接动态库引用以供 dlopen 在运行时使用。gcc链接库提示ldd
中没有该库的踪迹。-l
ld
这已经起作用很长时间了,但在调用或假设上似乎发生了一些变化?
相同的 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 提供的提示满足了当前的需求。