符号版本控制和 dlsym

发布于 2024-10-31 05:40:13 字数 322 浏览 2 评论 0原文

我使用 dlopen 在程序中加载 pthread 库,并使用 dlsym 获取 pthread_createpthread_join 的处理程序。

如何确保两个处理程序的版本兼容?我不在乎这些符号是新版本还是旧版本。我只是希望我使用的任何 pthread_create 都能与我得到的 pthread_join 很好地配合。

我知道有一个 dlvsym 可以向其传递显式版本号,但我不关心确切的版本号,因为我希望我的代码独立于库版本。

I load the pthread library in my program using dlopen, and fetch handlers to pthread_create and pthread_join using dlsym.

How can I ensure that both the handlers are of a compatible version? I do not care if the symbols are of new version or old versions. I just want that whatever pthread_create I use to work well with the pthread_join that I get.

I know there is a dlvsym to which I can pass explicit version number, but I do not care about exact version numbers as I want my code to be independent of library versions.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜心 2024-11-07 05:40:13

版本控制存在的唯一原因是对针对古代版本的 glibc 编译的程序进行了糟糕的 ABI 兼容性尝试,而实际上这根本无法工作。 (他们已经悄悄地破坏了 ABI 至少一次,据我所知,这种方式是不兼容的。)忽略它。

The only reason the versioning exists is for a poor attempt at ABI-compatibility with programs compiled against ancient versions of glibc, which will not actually work anyway. (They've silently broken the ABI at least once in a way that, as far as I can tell, cannot be compatible.) Just ignore it.

眼中杀气 2024-11-07 05:40:13

听起来你需要“dladdr - 查找包含给定地址的共享对象”。

但是,由于您没有说明您正在使用什么平台,因此它可能不可用。

看看吧..

Sounds like you need "dladdr - find the shared object containing a given address".

However as you have not said what platform you are using, so it might not be available.

Have a look and see..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文