gpt4 book ai didi

gcc/ld - 使用 glibc.2.6 中的 __isoc99_sscanf@@GLIBC_2.7 符号创建一个新的 libc.so

转载 作者:行者123 更新时间:2023-12-04 15:04:31 30 4
gpt4 key购买 nike

我有一个应用程序,当我尝试运行它时出错:

/lib/libc.so.6: version `GLIBC_2.7' not found

但是它需要从 glibc 2.7 获得的唯一符号是
__isoc99_sscanf@@GLIBC_2.7 

我想用这个符号作为 __sscanf() 的别名写一个小的单一函数“库”

我怎样才能用 gcc/ld 做到这一点?

我的变体不被接受,因为“@@”符号
 int __isoc99_sscanf@@GLIBC_2.7(const char *, const char *, ...) __attribute__((alias("__sscanf")));

第二个我的变体是
#include <stdarg.h>
int __isoc99_sscanf1(const char *a, const char *b, va_list args)
{
int i;
va_list ap;
va_copy(ap,args);
i=sscanf(a,b,ap);
va_end(ap);
return i;
}

// __asm__(".symver __isoc99_sscanf,__isoc99_sscanf@@GLIBC_2.7");
__asm__(".symver __isoc99_sscanf1,__isoc99_sscanf@@GLIBC_2.7");

但它以来自链接器的“未找到符号 __isoc99_sscanf@@GLIBC_2.7 的版本节点”结尾。

最佳答案

您的第二个版本使用此脚本:

GLIBC_2.7 {
global: __isoc99_sscanf;
local: *;
};

使用 -Wl,--version-script=script.txt ,然而,我不知道如何访问原始 sscanf@GLIBC_2.4 .

无论如何,也许您想使用 -D_GNU_SOURCE反而;避免 __isoc99_sscanf共。

关于gcc/ld - 使用 glibc.2.6 中的 __isoc99_sscanf@@GLIBC_2.7 符号创建一个新的 libc.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3660826/

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