Наконец ссылка в вопросе поможет с небольшими изменениями по сравнению с другими ответами. Вот мое исправление.
Я создал новый файл cpp с содержанием ниже
#include <iostream>
#include <stdarg.h>
__asm__(".symver __isoc99_sscanf,__isoc99_sscanf@GLIBC_2.7");
#ifdef __cplusplus
extern "C" {
#endif
int __isoc99_sscanf(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;
}
#ifdef __cplusplus
}
#endif
Скомпилировал его, чтобы получить объектный файл, и использовал его вместе с fix.txt, упомянутым в вопросе.
Однако я хотел бы сообщить, что поскольку моя сторонняя библиотека была скомпилирована в более поздней версии. Я получаю файл ELF OS ABI недействительным при запуске моего двоичного файла.
Существует решение из какого-то другого ответа, в котором предлагается использовать patchelf и модифицировать раздел intert, но это не помогает, поскольку в общих файлах этого раздела нет.
Я также пытался скомпилировать glibc2.7 и собрать бинарный файл, используя
-Wl,--dynamic-linker
-Wl,--rpath
флаги, указывающие на glibc2.7. Все еще напрасно.