首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用弱符号时避免对GLIBC_X.Y的依赖

如何在使用弱符号时避免对GLIBC_X.Y的依赖
EN

Stack Overflow用户
提问于 2011-05-26 17:30:05
回答 1查看 461关注 0票数 4

在处理Hurd中的信号实现时,我遇到了以下问题。

基本上,我向glibc添加了一个新函数,该函数由libpthread使用(它们来自Hurd上的不同来源)。为了让新的libpthread仍然使用旧的glibc,我在libpthread代码中将新函数声明为弱符号。(请参阅补丁程序here。)

当libpthread是用较旧的glibc构建的时候,一切都像被延迟一样工作。但是,当在构建时在glibc中实际找到该符号时,链接器发出与新符号的版本相对应的"VERNEED“,并且使用较旧的glibc运行会导致:

代码语言:javascript
复制
foo: ./libc.so.0.3: version `GLIBC_X.Y' not found
(required by /lib/libpthread.so.0.3)

其中GLIBC_X.Y是新引入的符号的版本。

我正在寻找的结果是,当glibc没有新符号时,新符号将为NULL,这就是我使用较旧的glibc构建libpthread时发生的情况。

你知道怎么解决这个问题吗?当链接libpthread时,我可以禁止我的符号的版本化吗?

EN

回答 1

Stack Overflow用户

发布于 2011-05-26 21:25:23

因此,与NULL相比,我对默认实现使用了弱别名,而不仅仅是弱符号,并且由于某些原因,在链接时,符号版本不是从glibc中拉入的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6136423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档