当前位置:  开发笔记 > 编程语言 > 正文

从LD隐藏共享对象中的符号

如何解决《从LD隐藏共享对象中的符号》经验,为你挑选了1个好方法。

我有两个第三方库偶尔会导出相同的符号名称.当加载可执行文件时,ld通常选错了,结果我崩溃了.我不能对这些库的内容做太多,所以可能有一种方法可以指示ld如何找到合适的文件?

操作系统 - Solaris 10,我的程序由autoconf/autotools/gcc构建,冲突的库是libclntsh(Oracle驱动程序的一部分)和OpenLDAP.遗憾的是,我不能使用Oracle的LDAP客户端实现 - 它缺乏OpenLDAP的许多功能.

编辑:链接如下:libclntsh.so-> A.so-> MAIN <-B.so <-libldap_r.so



1> Martin v. Lö..:

如果在编译时不需要在两个共享库中链接(从您的问题中不清楚),则可以使用-Bdirect共享库.这将记录共享库中找到它们的所有符号; 如果然后在运行时出现符号的第二个定义(来自其他共享库),它将被忽略.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有