アプリケーションを実行しようとするとエラーが発生します。
/lib/libc.so.6: version `GLIBC_2.7' not found
しかし、glibc2.7から必要な唯一のシンボルは
__isoc99_sscanf@@GLIBC_2.7
このシンボルを__sscanf()のエイリアスとして使用して、小さな単一の関数「ライブラリ」を作成したいと思います。
gcc / ldでこれを行うにはどうすればよいですか?
「@@」記号が原因で、私のバリアントは受け入れられません
int __isoc99_sscanf@@GLIBC_2.7(const char *, const char *, ...) __attribute__((alias("__sscanf")));
2番目に私の変種は
#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のバージョンノードが見つかりません」エラーで終了します。