我有两个第三方库偶尔会导出相同的符号名称.当加载可执行文件时,ld通常选错了,结果我崩溃了.我不能对这些库的内容做太多,所以可能有一种方法可以指示ld如何找到合适的文件?
操作系统 - Solaris 10,我的程序由autoconf/autotools/gcc构建,冲突的库是libclntsh(Oracle驱动程序的一部分)和OpenLDAP.遗憾的是,我不能使用Oracle的LDAP客户端实现 - 它缺乏OpenLDAP的许多功能.
编辑:链接如下:libclntsh.so-> A.so-> MAIN <-B.so <-libldap_r.so
如果在编译时不需要在两个共享库中链接(从您的问题中不清楚),则可以使用-Bdirect
共享库.这将记录共享库中找到它们的所有符号; 如果然后在运行时出现符号的第二个定义(来自其他共享库),它将被忽略.