【发布时间】:2011-04-09 07:37:00
【问题描述】:
我有一个应用程序,当我尝试运行它时出错:
/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 的版本节点”错误结尾。
【问题讨论】:
标签: gcc linker ld scanf linker-scripts