在处理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是新引入的符号的版本。
我正在寻找的结果是,当glibc没有新符号时,新符号将为NULL,这就是我使用较旧的glibc构建libpthread时发生的情况。
你知道怎么解决这个问题吗?当链接libpthread时,我可以禁止我的符号的版本化吗?
发布于 2011-05-26 21:25:23
因此,与NULL相比,我对默认实现使用了弱别名,而不仅仅是弱符号,并且由于某些原因,在链接时,符号版本不是从glibc中拉入的。
https://stackoverflow.com/questions/6136423
复制相似问题