gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:01:18 27 4
gpt4 key购买 nike

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

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

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

最佳答案

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

关于gcc - 从 LD 隐藏共享对象中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/335108/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com