gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 13:50:26 26 4
gpt4 key购买 nike

在 Hurd 中进行信号实现时,我遇到了以下问题。

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

当 libpthread 使用较旧的 glibc 构建时,一切都按预期进行。
但是,当在构建时在 glibc 中实际找到该符号时,
链接器发出与新符号版本相对应的“VERNEED”
并使用较旧的 glibc 运行会导致:

foo: ./libc.so.0.3: version `GLIBC_X.Y' not found
(required by /lib/libpthread.so.0.3)

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

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

知道如何解决这个问题吗?
链接 libpthread 时,我可以禁止对我的符号进行版本控制吗?

最佳答案

所以我对默认实现使用了弱别名
NULL 相比,它不仅仅是一个弱符号,
出于某种原因,结果证明
链接时不会从 glibc 中提取符号版本。

关于gcc - 使用弱符号时如何避免对 GLIBC_X.Y 的依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6136423/

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